htaccess多个域重定向到https:// www和特定文档根目录

时间:2017-12-16 14:56:59

标签: .htaccess multiple-domains

我有3个实时域,这些域指向CMS处理每个域的同一文档根目录。

我现在需要使用WWW将所有3个域重定向到HTTPS,并且可以选择在将来更改每个域文档根目录。

示例需要发生的事情:

http://domain1.com => https://www.domain1.com

http://www.domain1.com => https://www.domain1.com

domain2.com和domain3.com也必须同样发生

所有三个域的文档根目录是/cms-1.1 /

将来domain1.com可能会更改为新文档根/cms-2.1/,但对于其他域,文档根目录将保持不变/cms-1.1 /

我可以为每个域单独或组合编写一条规则或多条规则吗?

到目前为止,我来到这里:

  • 对于文档根目录:(对于每个域)

    RewriteCond %{HTTP_HOST} ^domain1.com$ [NC,OR]
    RewriteCond %{HTTP_HOST} ^www.domain1.com$
    RewriteCond %{REQUEST_URI} !^/cms-1.1/*$
    RewriteRule ^(.*)$ /cms-1.1/$1 [L]
    
  • 非www到www :(对于每个域名)

    RewriteCond %{HTTP_HOST} ^domain1\.com$ [NC]
    RewriteRule (.*) http://www.domain1.com/$1 [R=301,L]
    
  • 用于HTTPS :(对于每个域)

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

但这会有效吗?由于所有三个域都是实时的,我不需要任何停机时间......

1 个答案:

答案 0 :(得分:1)

您可以使用此通用代码(未经测试)

# https mechanism
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

#none www to www.
RewriteCond %{HTTP_HOST} ^(?!www\.)(.+) [NC]
RewriteRule ^(.*) https://www.%1%{REQUEST_URI} [R=301,NE,L]

#Document root each domain
RewriteCond %{HTTP_HOST} ^domain1.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.domain1.com$
RewriteCond %{REQUEST_URI} !^/cms-1.1/*$
RewriteRule ^(.*)$ /cms-1.1/$1 [L]