.htaccess用于域名更改 - apache + plesk

时间:2012-09-17 19:40:58

标签: apache .htaccess plesk

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

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

如何使这个更通用,以便子域也适当地路由?对于奖励积分,我如何将https请求路由到https,将http路由到http。

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

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

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

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

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

先谢谢!

1 个答案:

答案 0 :(得分: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]