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

时间:2018-11-06 09:28:06

标签: apache .htaccess

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

  1. 将所有网址从domain2重写到domain1。
  2. 将所有www网址重写为其非www网址,并将其重定向到domain1
  3. 强制使用HTTPS网址
  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 个答案:

答案 0 :(得分:0)

假定它适用于项目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