如何通过htaccess强制使用https

时间:2019-07-08 07:46:31

标签: .htaccess

我有一个使用多个别名的应用程序,我想确保始终将每个站点的访问者重定向到https。

因此我已将此规则添加到我的htaccess文件中:

RewriteCond %{HTTP_HOST} ^example.com$
RewriteRule (.*) https://www.example.com/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^example1.com$
RewriteRule (.*) https://www.example1.com/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^example2.com$
RewriteRule (.*) https://www.example2.com/$1 [R=301,L]

访问http://example.com时,他们将被重定向到https://www.example.com

但是,当他们访问www.example.com时,它们不会被重定向到https域。

有没有一种简单的方法可以将所有域都强制为https://www。不必明确提及每个域?

2 个答案:

答案 0 :(得分:0)

更改您对此规则的重写。首先捕获所有https://和http://非www域请求,然后重定向到https://www.requested-domain。其次,捕获所有其他http://www域请求,然后重定向到https://www.requested-domain

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule (.*) https://www.%{HTTP_HOST}/$1 [R=301,L]

RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}/$1 [R=301,L]

答案 1 :(得分:0)

这是我的做法

RewriteCond %{SERVER_PORT} 80
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]