mod_rewrite 在尝试根据用户代理进行重定向时发送重定向循环

mod_rewrite 在尝试根据用户代理进行重定向时发送重定向循环

我正在使用 Apache 2.2.3(我知道是旧版本)

因此,我尝试基于旧版本的 IE(目前为 6 和 7...)进行重定向,但出现了重定向循环。

我有:

RewriteEngine On RewriteCond %{HTTP_USER_AGENT} "MSIE\ [6-7]" [NC] RewriteRule .* https://example.com/upgrade.html [R=302,L]

在虚拟机中使用 IE7 之类的浏览器会耗费很长时间,而且根本无法加载。还尝试使用 browserstack,结果相同。通常我的网站可以正常显示,但这种重写对我来说效果不太好。如果 Apache 看到 IE6,7,我想重定向到一个页面,而不是转到主页。

对于我来说,使用 javascript 库是行不通的,因为其他所有内容都是动态生成的。

答案1

如果 example.com/upgrade.html 在同一台服务器上,则需要添加检查以确保如果用户已经在 upgrade.html URL 上(例如,在重定向到该 URL 之后),则不执行重定向。

尝试这个(第二行是我添加的):

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/upgrade.html$
RewriteCond %{HTTP_USER_AGENT} "MSIE\ [6-7]" [NC]
RewriteRule .* https://example.com/upgrade.html [R=302,L]

相关内容