0

我们正在使用基于 plesk 的系统,并且最近更改了域名。我想将所有进入旧域的请求重定向到新域。有很多问题以类似的方式提出,但我的有点不同。我想确保所有子域都被路由到新域上的同一个子域。我在 docroot 中设置了一个通用的 htaccess,但由于某种原因,它也适用于所有子域。

RewriteCond %{HTTP_HOST} !newdomain.com$ [NC]
RewriteRule ^(.*)$ http://newdomain.com/$1 [L,R=301]

我怎样才能使它更通用,以便子域也可以适当地路由?对于奖励积分,我如何将 https 请求路由到 https 和 http 到 http。

我想补充一点,该规则将第一个 url 转换为第二个,这是不可取的:

http://SUBDOMAIN.olddomain.com/somepath/somefile.php
http://newdomain.com/subdomains/SUBDOMAIN/httpdocs/somepath/somefile.php

正确的转换应该创建以下 url:

http://SUBDOMAIN.newdomain.com/somepath/somefile.php

最后,这应该适用于通配符子域。

先谢谢了!

4

1 回答 1

0

尝试:

# ignore "www."
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^([^.]+)\.olddomain.com$ [NC]
RewriteRule ^(.*)$ http://%1.newdomain.com/$1 [L,R=301]

在你已经拥有的规则之前,你会想要这个。

而且由于您已经编辑了问题,因此您需要额外的内部重写来处理新站点上的一般子域,这与重定向无关。这是 301 重定向范围之外的全新功能。您将需要特殊规则来处理子域的内部路由:

RewriteCond %{REQUEST_URI} !^/subdomains/
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^([^.]+)\.newdomain.com$ [NC]
RewriteRule ^(.*)$ /subdomains/%1/httpdocs/$1 [L]
于 2012-09-17T19:53:31.443 回答