我的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的方式)颁发证书)。
答案 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
,所以它会再次执行此操作等等。因此重定向循环。