htaccess使用https、非www和目录拖尾将两个域重写为一个域



我有两个后缀不同的域名,我想做的是:

  1. 将所有url从domain2重写为domain1
  2. 将所有的www url重写为它们的非www url,并将其重定向到domain1
  3. 强制HTTPS URL
  4. 我希望这些规则也能影响完整的目录尾部,例如:http://www.domain2.net/shop/会去https://domain1.com/shop/

我现在拥有的:

RewriteCond %{HTTP_HOST} ^domain2.net$ [OR]
RewriteCond %{HTTP_HOST} ^www.domain2.net$ [OR]
RewriteCond %{HTTP_HOST} ^www.domain1.com$
RewriteRule ^/?$ "https://domain1.com" [R=301,L]

正如你所看到的,这在一定程度上满足了我的需求,但我很难弄清楚如何操作整个目录尾部,有人知道正确的解决方案吗?

假设它适用于项目1、2和3。对于第4项,您需要将要在重写部分中重用的模式部分放在括号中,如下所示:

RewriteCond %{HTTP_HOST} ^domain2.net$ [OR]
RewriteCond %{HTTP_HOST} ^www.domain2.net$ [OR]
RewriteCond %{HTTP_HOST} ^www.domain1.com$
RewriteRule ^(.*)$ "https://domain1.com/$1" [R=301,L]
  • ^(.*)$:从任何.*开始,直到结束$"。请注意,.*也将匹配空字符串
  • $1将把括号之间的内容替换为重写部分
  • 例如:http://domain2.net/TATA.html->https://domain1.com/TATA.html

最新更新