2015-10-07 115 views
1

请,你能给我一个建议,为什么这个.htaccess文件导致重定向循环?htaccess RewriteRule导致循环

我有这个网址: www.akomin.cz/www.akomin.cz/smth/ ,我想它有重定向: www.akomin.cz/nedostupny/

但Safari给我一个错误,当试图打开www.akomin.cz/nedostupny/有许多重定向。

RewriteEngine on 

RewriteRule !^/nedostupny/ /nedostupny/ [L,R=302] 


RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} !\.(php|html?|jpg|gif)$ 
RewriteRule ^(.*)([^/])$ http://%{HTTP_HOST}/$1$2/ [L,R=301] 

RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?/$1 [L] 
+0

与php无关 – Epodax

回答

0

您的第一条规则改成这样:

RewriteCond %{THE_REQUEST} !/nedostupny/ [NC] 
RewriteRule^/nedostupny/ [L,R=302] 

您需要使用%{THE_REQUEST},因为你的最后一个规则改变REQUEST_URI/index.php因此导致第一条规则再次触发。 THE_REQUEST变量表示Apache从您的浏览器接收到的原始请求,并且它在执行一些重写规则后不会被覆盖。

确保在清除浏览器缓存后对其进行测试。

+1

谢谢,它的工作原理。 –