我有一个使用多个别名的应用程序,我想确保始终将每个站点的访问者重定向到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。不必明确提及每个域?
答案 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]