htaccess 多个域重定向到 https://www 和特定文档根目录
Posted
技术标签:
【中文标题】htaccess 多个域重定向到 https://www 和特定文档根目录【英文标题】:htaccess multiple domains redirect to https://www and to specific document root 【发布时间】:2018-05-30 12:33:08 【问题描述】:我有 3 个 LIVE 域,它们指向同一个文档根目录,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】:你可以使用这个通用代码(未测试)
# 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]
【讨论】:
嗯。它适用于别名域“domain2.com”和“domain3.com”,但不适用于“domain1.com”的托管域......如果他们知道为什么,我会与托管服务提供商核实。 暂别... Cloudflare 上的某些设置设置错误。都好。解决方案有效。以上是关于htaccess 多个域重定向到 https://www 和特定文档根目录的主要内容,如果未能解决你的问题,请参考以下文章
在 .htaccess 中使用 HTTPS 将旧域重定向到新域