htaccess 多个域重定向到 https://www 和特定文档根目录
htaccess multiple domains redirect to https://www and to specific document root
我有 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/ [L]
对于非 www 到 www:(对于每个域)
RewriteCond %{HTTP_HOST} ^domain1\.com$ [NC]
RewriteRule (.*) http://www.domain1.com/ [R=301,L]
对于 HTTPS:(对于每个域)
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.domain1.com/ [L,R=301]
但这行得通吗???由于所有三个域都处于活动状态,因此我不需要任何停机时间...
您可以使用此通用代码(未测试)
# 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/ [L]
我有 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/ [L]
对于非 www 到 www:(对于每个域)
RewriteCond %{HTTP_HOST} ^domain1\.com$ [NC] RewriteRule (.*) http://www.domain1.com/ [R=301,L]
对于 HTTPS:(对于每个域)
RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://www.domain1.com/ [L,R=301]
但这行得通吗???由于所有三个域都处于活动状态,因此我不需要任何停机时间...
您可以使用此通用代码(未测试)
# 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/ [L]