.htaccess - 为什么这个 .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]
这是 webfaction 共享主机,所以看起来服务器变量 ${HTTPS} 不正确,正如@MrWhite 指出的那样。
推荐阅读
- javascript - 如何使用 React JS 将 json api 中的所有值显示到单个下拉列表中?
- dart - Flutter Camera 插件错误 - 在 null 上调用了 getter 'height'
- android - Android Studio调试清除应用程序数据但再次运行应用程序时数据没有被删除?
- java - 如何使用 Grunt 将 jar 文件复制到 WEB-INF/lib
- java - 包含数组的 Java 可选
- eclipse - 在 MacOS high Sierra / eclipse 上重新定位 GDB 调试器
- php - PHP 和 Mysql 错误“您的 SQL 语法有错误;请查看与您的 MariaDB 服务器版本对应的手册”
- angular - Angular unit tests observable with subscribe method not firing
- mysql - What database should I use for mining pool for blockchain?
- android - Android AlarmManager and BroadcastReceiver empty intent data