htaccess RewriteRule导致循环

时间:2015-10-07 11:27:48

标签: php regex apache .htaccess mod-rewrite

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

我有这个网址: 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]

1 个答案:

答案 0 :(得分:0)

将您的第一条规则更改为:

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

您需要使用%{THE_REQUEST},因为您的上一条规则正在将REQUEST_URI更改为/index.php,从而导致首次触发规则。 THE_REQUEST变量表示Apache从您的浏览器收到的原始请求,并且在执行某些重写规则后不会被覆盖。

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