mod_rewrite是否基于用户代理可检测?

时间:2013-10-30 08:00:18

标签: .htaccess mod-rewrite

最终用户是否可以检测到mod_rewrite规则? 在不发送代理或重定向响应的情况下,根据浏览器类型重定向用户的最佳方法是什么?

我正在尝试确保具有一种浏览器类型的用户获得正确的登录页面,而另一种浏览器类型的用户获得他们的浏览器类型。但是,它需要无法检测到。

所有网站用户都会看到“www.mysite.org/index.html”,但“index.html”将是基于用户代理字符串的不同页面,但我不想要任何指标,如重定向状态(3xx) )只有OK 200.

添加[PT]会这样做还是添加[R]并发送200?我不想发送200作为规则,以防出现问题,但我不希望用户看到任何本地重定向的指示。我认为服务器端设置是隐藏的,但有人表示响应代码可以检测到它。

Examples I found;

    # MS Internet Explorer - Mozilla v4
    RewriteEngine On
    RewriteCond %{HTTP_USER_AGENT} ^Mozilla/4(.*)MSIE
    RewriteRule ^index\.html$ /index.IE.html [L]

    # Netscape v6.+ - Mozilla v5
    RewriteCond %{HTTP_USER_AGENT} ^Mozilla/5(.*)Gecko
    RewriteRule ^index\.html$ /index.NS5.html [L]

    # Lynx or Mozilla v1/2
    RewriteCond %{HTTP_USER_AGENT} ^Lynx/ [OR]
    RewriteCond %{HTTP_USER_AGENT} ^Mozilla/[12]
    RewriteRule ^index\.html$ /index.20.html [L]

1 个答案:

答案 0 :(得分:0)

这是这种方式的一般流程:

  1. 浏览器向服务器发送请求
  2. 服务器收到请求(此时,浏览器正在等待响应)
  3. 请求通过许多模块,mod_rewrite是其中之一
  4. 触发mod_rewrite规则并将URI 重写到另一个URI
  5. 该URI最终获得服务,其内容将返回给浏览器。
  6. 就浏览器而言,这就是它所看到的:

    1. 我有一个网址
    2. 我发送了一个请求,
    3. 我收到了我发送的网址的内容
    4. 在第一个工作流程中,步骤2,3和4都只在服务器端发生,因此浏览器对此一无所知。

      所以你不需要PTR(它告诉浏览器去其他地方,从而将它暴露在内容真正的位置)。