强制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] 
+0

我只是想你的解决方案,我仍然得到同样的错误。 –

+0

我建议您清除浏览器缓存或进行深层重新加载......如果错误仍然存​​在,那么您必须启用重写日志记录(在重写模块文档中查找详细信息),它会准确告诉您重写内部发生了什么引擎,或者您使用网络嗅探器来检查发送的实际重定向。 – arkascha

+0

哦,我只是看到你必须根据你的RedirectMatch ^/blogs $ http:// www.patrickwhitehouse.pw/blog.html'将这条规则修改为'RedirectRule ^/blogs $%{REQUEST_SCHEME}:// patrickwhitehouse.pw/blog.html' – arkascha