强制HTTPS不起作用
问题描述:
我试图通过.htaccess强制HTTPS,并且我经常收到太多重定向错误。强制HTTPS不起作用
这是我的.htaccess文件:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^patrickwhitehouse.pw$ [NC]
RewriteRule ^(.*)$ http://patrickwhitehouse.pw/$1 [L,R=301]
#force SSL
RewriteCond %{HTTPS} !=on
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Options +MultiViews
<ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^&\ ]+).html
RewriteRule .* /%1? [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ $1.html [L]
RedirectMatch ^/blogs$ http://www.patrickwhitehouse.pw/blog.html
答
你的第一个重写规则是罪魁祸首,对于每一个成功的重定向到https
然后重新重定向到硬编码http
再次上下一个后请求外部重定向...
试试这个稍作修改的版本,而不是:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^patrickwhitehouse.pw$ [NC]
RewriteRule ^(.*)$ %{REQUEST_SCHEME}://patrickwhitehouse.pw/$1 [L,R=301]
#force SSL
RewriteCond %{HTTPS} !=on
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
或者说,有点清理:
RewriteEngine On
# force host 'patrickwhitehouse.pw'
RewriteCond %{HTTP_HOST} !^patrickwhitehouse.pw$ [NC]
RewriteRule^%{REQUEST_SCHEME}://patrickwhitehouse.pw%{REQUEST_URI} [L,R=301]
# force SSL
RewriteCond %{HTTPS} !=on
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
我只是想你的解决方案,我仍然得到同样的错误。 –
我建议您清除浏览器缓存或进行深层重新加载......如果错误仍然存在,那么您必须启用重写日志记录(在重写模块文档中查找详细信息),它会准确告诉您重写内部发生了什么引擎,或者您使用网络嗅探器来检查发送的实际重定向。 – arkascha
哦,我只是看到你必须根据你的RedirectMatch ^/blogs $ http:// www.patrickwhitehouse.pw/blog.html'将这条规则修改为'RedirectRule ^/blogs $%{REQUEST_SCHEME}:// patrickwhitehouse.pw/blog.html' – arkascha