.htaccess 强制HTTPS不会';行不通

.htaccess 强制HTTPS不会';行不通,.htaccess,https,.htaccess,Https,我试图通过.htaccess强制使用HTTPS,但我经常遇到重定向过多的错误 这是我的.htaccess文件: 重新编写引擎打开 重写cond%{HTTP_HOST}^patrickwhitehouse.pw$[NC] 重写规则^(.*)$http://patrickwhitehouse.pw/$1[L,R=301] #强制SSL 重写cond%{HTTPS}=在…上 重写规则^https://%{HTTP_HOST}%{REQUEST_URI}[L,R=301] 选项+多视图 mod_gzi

我试图通过.htaccess强制使用HTTPS,但我经常遇到重定向过多的错误

这是我的.htaccess文件:

重新编写引擎打开
重写cond%{HTTP_HOST}^patrickwhitehouse.pw$[NC]
重写规则^(.*)$http://patrickwhitehouse.pw/$1[L,R=301]
#强制SSL
重写cond%{HTTPS}=在…上
重写规则^https://%{HTTP_HOST}%{REQUEST_URI}[L,R=301]
选项+多视图
mod_gzip_on Yes
是的
mod|gzip|item|u include file.(html?| txt | css | js | php | pl)$
mod_gzip_item_包含处理程序^cgi脚本$
mod_gzip_项目包括mime^text/*
mod_gzip_item_包括mime^application/x-javascript*
mod_gzip_项_排除mime^image/*
mod_gzip_item_排除rspheader^内容编码:.*gzip*
重写cond%{u请求}^[A-Z]{3,9}\/([^&\]+).html
是否重写规则。*/%1?[R=301,L]
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-F
重写规则^(.*)$$1.html[L]

重定向匹配^/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]

我刚刚尝试了你的解决方案,但仍然遇到相同的错误。我建议你清除浏览器缓存或进行深度重新加载。。。如果错误仍然存在,则您必须启用重写日志记录(在“重写模块”文档中查找详细信息),它会准确地告诉您重写引擎中发生了什么,或者您使用网络嗅探器检查发送的实际重定向。哦,我只是看到您必须调整此规则
RedirectMatch^/blogs$http://www.patrickwhitehouse.pw/blog.html
根据您的
重定向规则^/blogs$%{REQUEST\u SCHEME}://patrickwhitehouse.pw/blog.html