首页 > 解决方案 > 为什么这个 .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]

标签: .htaccess

解决方案


有效的解决方案是:

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

这是 webfaction 共享主机,所以看起来服务器变量 ${HTTPS} 不正确,正如@MrWhite 指出的那样。


推荐阅读