如果域匹配,则htaccess条件重定向

时间:2016-05-17 09:54:26

标签: .htaccess redirect

我想将非https 重定向到https,如果域匹配,并且非www 重定向到所有域的www。

这是我的代码,但它不会将非www重定向到仅限https版本的www。

注意:我为非www和www版本分离了规则,因为如果我在网址中添加了www,那么它将是www 2x。

RewriteEngine On

#all non-www to www (without HTTPS)
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

#non-https to https if these 2 domains matched - and since there is already www don't add it.
RewriteCond %{HTTP_HOST} ^www\.domainA\.com [NC,OR]
RewriteCond %{HTTP_HOST} ^www\.domainB\.com [NC]
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

#non-https to https if these 2 domains matched - and also www
RewriteCond %{HTTP_HOST} ^domainA\.com [NC,OR]
RewriteCond %{HTTP_HOST} ^domainB\.com [NC]
RewriteCond %{HTTPS} off
RewriteRule (.*) https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !index
RewriteRule (.*)$ index.html

2 个答案:

答案 0 :(得分:0)

尝试添加此功能,应添加www。使用https://

进入任何域名
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

答案 1 :(得分:0)

代码很好。问题是未在主机中配置www。