vin*_*nny 7 apache .htaccess webserver
我想根据用户使用的浏览器将访问者重定向到我的特定页面.
例如:所有访问者将首先访问http://www.example.com/xy/abc.html.
如果访问者使用的是Firefox,则应将其重定向到http://www.example.com/xy/firefox.html
如果访问者使用的是Chrome,则应将其重定向到http://www.example.com/xy/chrome.html
我想为opera,chrome,firefox,IE,safari浏览器以及非标识浏览器的默认重定向处理此问题.
有关代码的任何帮助吗?我试着查找,我发现所有浏览器都是一个重定向代码,而不是特定的.
非常感谢您的帮助.谢谢.
SáT*_*SáT 12
您可以使用mod_rewrite的RewriteCond指令来测试用户代理的报告名称.在放在xy目录中的.htaccess文件中,它看起来像这样:
RewriteCond %{HTTP_USER_AGENT} Opera
RewriteRule ^abc.html$ http://example.com/xy/opera.html [R=301]
Run Code Online (Sandbox Code Playgroud)
这将永久性地将具有Opera的用户代理字符串中的浏览器重定向到opera.html.您可以在useragentstring.com上找到用户代理如何识别自己的合适列表.您会注意到许多用户代理字符串实际上以"Mozilla"开头(由于一些邪恶的历史原因),但只是测试以查看字符串是否包含浏览器的名称(IE是"MSIE")应该就足够了.
问题是,HTTP_USER_AGENT浏览器会报告字符串,浏览器可能会报告他们想要的任何内容.Opera甚至还有一个内置选项,可以将其伪装成IE或FF.通常,很有可能基于用户代理字符串的浏览器嗅探最终会错过,然后用户将会烦恼.我强烈建议您让用户以某种方式覆盖自动重定向.
所以,像这样的东西可能作为第一种方法:
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} Opera
RewriteRule ^abcd.html$ opera.html [NC,L]
RewriteCond %{HTTP_USER_AGENT} MSIE
RewriteRule ^abcd.html$ ie.html [NC,L]
RewriteCond %{HTTP_USER_AGENT} Chrome
RewriteRule ^abcd.html$ chrome.html [NC,L]
RewriteCond %{HTTP_USER_AGENT} Safari
RewriteRule ^abcd.html$ safari.html [NC,L]
RewriteCond %{HTTP_USER_AGENT} Firefox
RewriteRule ^abcd.html$ firefox.html [NC,L]
RewriteRule ^abcd.html$ default.html [L]
Run Code Online (Sandbox Code Playgroud)
L标志确保该规则是该传递中要执行的Last,因此如果浏览器使用包含Firefox,Safari,MSIE和Opera的字符串报告自身,则匹配的第一个规则(在本例中为Opera)将确定着陆页.此版本执行软重定向(浏览器的地址栏不会更改).如果你想要一个坚硬的R = 301重定向,请务必拼写出目标网页的整个网址,即RewriteRule ^abcd.html$ http://example.com/xy/opera.html [NC,L,R=301]
| 归档时间: |
|
| 查看次数: |
15302 次 |
| 最近记录: |