0

最终用户是否可以检测到 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]
4

1 回答 1

0

这是其工作方式的一般流程:

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

就浏览器而言,这就是它所看到的全部内容:

  1. 我有一个网址
  2. 我发送请求,
  3. 我收到了我发送的那个 URL 的内容

在第一个工作流中,步骤 2、3 和 4 都只发生在服务器端,因此浏览器对此一无所知。

所以你不需要PTor R(它告诉浏览器去别的地方,从而将它暴露在内容真正所在的地方)。

于 2013-10-30T08:16:36.153 回答