使用Apache Rewrite匹配除IE6 useragent的公共根目录之外的所有请求

时间:2012-02-18 08:29:14

标签: apache mod-rewrite internet-explorer-6

我的本​​地主机(只是我的本地WAMP服务器)有一个规则,它只重写localhost /到index.php以及所有其他请求重写.php。我能够通过以下方式实现这一目标......

RewriteEngine on
RewriteRule ^$ index.php [QSA]

我正在尝试制定与 ^$之外的所有请求匹配的相反规则,因此!^$不起作用。基本上我想为IE6做一个例外,为一些旧的东西,只是在案例场景,虽然我的现代项目向前推进有一个通用的升级页面。

这是我尝试过的一个例子,看起来虽然没有,但它会起作用。

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} MSIE\ ([56])\.
RewriteRule !^$ upgradedamnit\.php [L]

一些澄清......

  1. 我非常严格不使用用户代理,但如果你欺骗浏览器构成IE6,并希望事情顺利运行,我会对你有一些坏消息。

  2. 这仅适用于我的本地环境,而不是我的实时环境,尽管我总是先在本地测试,然后再将其投放到实时环境中。

1 个答案:

答案 0 :(得分:0)

这样做:

RewriteEngine on
RewriteBase /

RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule ^ - [L]

RewriteCond %{HTTP_USER_AGENT} MSIE\ [56]\. [NC]
RewriteRule ^ upgradedamnit.php? [L]

最后两行必须是RewriteRule ^ - [L]之后的行。