如何纠正htaccess重定向循环错误

时间:2016-03-10 01:57:10

标签: apache .htaccess redirect mod-rewrite

我的htaccess文件中的以下代码在我测试的所有浏览器中创建了“此网页有重定向循环ERR_TOO_MANY_REDIRECTS”错误。

RewriteEngine On
RewriteBase /

RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www.example.com$ [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [NE,L,R=301]

该代码基于@ anubhava的贡献https://stackoverflow.com/a/26914740/1459653

在我使用http://htaccess.madewithlove.be/

进行的测试中,代码似乎运行良好

但是,一旦实施,就会发生错误,并且根据https://varvy.com/tools/redirects/处的重定向映射工具,每个www ||都有19个重定向,其中包含“最终状态代码:301”。 www(https)||没有www(https)

http://www.example.com
301 redirect
https://example.com/
https://example.com/
301 redirect
https://example.com/
https://example.com/
301 redirect

我的意图是重定向所以所有排列(example.com / www.example.com / https://www.example.com / http://example.com)都会导致重定向到https://example.com/(这就是SSL的方式)颁发证书)。

1 个答案:

答案 0 :(得分:2)

您的代码不正确。你打算这样做,

RewriteEngine On
RewriteBase /

RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^example\.com$ [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [NE,L,R=301]

具体而言,您说如果不是www.example.com重定向到example.com,那么它会重定向到example.com,然后它不会www.example.com,所以它会再次执行此操作等等。因此重定向循环。