2012-11-08 63 views
3

我正在尝试在我的httpd.conf中为服务器上的所有网站设置全局移动重定向,并且只需编辑一次,即可对92次进行编辑。所有移动网站都会重定向到一个位置,这样很好。尝试从htaccess规则中排除URL

但是我想排除一个特定的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] 

谁能弄清楚它为什么引起在那个特定的URL重定向循环?它只是一个包含的.htaccess文件夹和一个带有header()重定向调用的index.php文件。

回答

6

%{REQUEST_URI}变量将从未样子http://www.example.com/mobile,因为它永远不会包含协议(以下简称“HTTP://”位)或主机信息(以下简称“www.example.com”`一部分)。您只想URI部分

RewriteCond %{REQUEST_URI} !^/mobile 

如果您需要检查主机名,以及,你需要一个附加条件:

RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC] 
+0

谢谢!那就是诀窍。 –