我们正在使用基于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
最后,这应该适用于通配符子域。
先谢谢!
答案 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]