URL重定向导致循环

时间:2014-01-23 19:37:30

标签: .htaccess redirect url-rewriting http-redirect

下面是我的.htaccess文件。

RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^([^\.]+)$ $1.php [L]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteRule ^axiom/?$ /axiom/publish.htm [L]

这导致重定向循环。如果我发表评论

RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

页面会加载。我不知道我的错误在哪里,但我假设它在某处。

1 个答案:

答案 0 :(得分:1)

此规则会将您重定向到您正在访问的同一网址 -

RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

考虑您正在访问http://www.example.com/test/a.html。此重写规则与test / a.html和

匹配
REQUIEST_URI = test/a.html
HTTP_HOST = www.exmpale.com

所以你要重定向到https://www.example.com/test/a.html

然后您匹配相同的条件并再次重定向到同一页面!

如果您尝试从http重定向到https,那么您需要添加另一个条件来检查它是来自http还是https

RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^([^\.]+)$ $1.php [L]
RewriteRule ^axiom/?$ /axiom/publish.htm [L]

RewriteCond %{HTTPS} ^off$ [NC] 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]