7

我正在尝试在我的 httpd.conf 中为服务器上的所有站点设置一个全局移动重定向,并且只需要编辑一次,而不是 92 次。所有移动站点都将重定向到一个位置,这很好。

但是,我想从重定向中完全排除一个特定的 URL。这是我到目前为止不起作用并导致重定向循环的内容:

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^.*iphone|ipod|blackberry|android|sgh|sonyericsson|psp|mot|htc|lg|nokia|palm|treo|j2me|webos|smartphone|symbian.*$ [NC]
RewriteCond %{REQUEST_URI} !^http://www.example.com/mobile [NC]
RewriteRule ^(.*) http://www.example.com/mobile [R=302,L]

谁能弄清楚为什么它会导致该特定网址上的重定向循环?它只是该域上的一个文件夹,其中仅包含一个 .htaccessRewriteEngine off和一个带有 header() 重定向调用的 index.php 文件。

4

1 回答 1

10

%{REQUEST_URI}变量永远不会看起来像http://www.example.com/mobile,因为它永远不会包含协议(“http://”位)或主机信息(“www.example.com”` 部分)。您只需要 URI 部分

RewriteCond %{REQUEST_URI} !^/mobile 

如果您还需要检查主机名,则需要一个附加条件:

RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
于 2012-11-08T16:29:30.200 回答