在所有页面上全局强制使用SSL

时间:2017-07-20 作者:Rizzah

现在我的域名www.example.com 设置为强制HTTPS,并且可以正常工作。该网站还将所有内容正确链接到HTTPS。(数据库中任何地方都没有出现HTTP)。

但是,如果您正在访问子页面,您可以再次将url更改为HTTP,例如http://example.com/subpage/ 而且它不会强制HTTPS。

我在我的.htaccess 在根目录中:

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://example.com/$1 [R,L]
你知道这是什么原因吗?

2 个回复
最合适的回答,由SO网友:leymannx 整理而成

要将所有页面全局重定向到HTTPS,请将以下行添加到.htaccess:

# Globally force SSL.
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
应直接放置在RewriteEngine on 如果之前没有重写。

SO网友:Junaid

Try this htaccess rule

RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
结束