为什么这个.htaccess配置会导致重定向循环



我不确定是什么导致了这里的重定向循环。

RewriteEngine on 

此位删除.html扩展

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.*)$ $1.html [NC,L]  

此位强制非www

RewriteCond %{HTTP_HOST} ^www.example.com [NC]
RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]

这个比特应该强制SSL,但显然我在添加它时会得到重定向循环,但据我所知,这应该只在HTTPS关闭时触发?

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

有效的解决方案是:

RewriteCond %{HTTP:X-Forwarded-SSL} !on
RewriteCond %{REQUEST_URI} !^/(.well-known)(/|$)
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

正如@MrWhite所指出的,这是网络共享托管,所以看起来服务器变量${HTTPS}是不正确的。

最新更新