htaccess将所有子域重写为url路径

时间:2020-03-31 09:37:59

标签: .htaccess url-rewriting

我需要将所有转到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)

如何使它适用于子域的任何组合?

1 个答案:

答案 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。这样可以避免您遇到缓存问题...

相关问题