我需要将所有转到domain1.com上任何子域的请求重定向到domain2.com,并将子域部分作为路径传递,例如:
sub1.domain1.com-> domain2.com/sub1
这符合我当前的重写规则:
RewriteCond %{HTTP_HOST} ^.+?\.domain1\.com$ [NC]
RewriteRule ^(.*)$ https://domain2.com/$1 [L,R=301]
但是当我有一个如下所示的子域时,它将不起作用:
sub1.sub2.domain1.com->重定向到domain2.com/,而未将子域部分带到路径。 (domain2.com/sub1.sub2)
如何使它适用于子域的任何组合?
答案 0 :(得分:0)
我看不到目前有任何任何这样的重定向有效。您发布的重写规则肯定不会 发挥您的描述...
我建议采用这种方法来移交“子域名”:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(?:(.+)\.)?domain1\.com$ [NC]
RewriteRule ^ https://domain2.com/%1 [L,R=301]
https://sub1.sub2.domain1.com/some/path => https://domain2.com/sub1.sub2
很明显,这将忽略最初请求的任何路径,但是据我所知,这就是您想要的。如果您还希望保留路径并仅在子域名之前添加路径,则此变体应为您指明正确的方向:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(?:(.+)\.)?domain1\.com$ [NC]
RewriteRule ^/?(.*)$ https://domain2.com/%1/$1 [L,R=301]
https://sub1.sub2.domain1.com/some/path => https://domain2.com/sub1.sub2/some/path
一个好主意是使用302重定向开始,并且仅在事情按需要工作时才将其更改为301。这样可以避免您遇到缓存问题...