0

我有一种情况,我们重新设计了一个站点并将其移至一个新域。旧站点有一些客户端子域,我们需要将它们重定向到新域,但要重定向到我们将明确指定的文件夹。请注意,新域实际上是旧域的子域,因此不确定这是否会使任何事情复杂化(如果有的话)。

例如,当前使用以下规则oldsite.com将所有请求重定向到:new.oldsite.com

RewriteCond %{HTTP_HOST} !^\.oldsite\.com
RewriteRule ^(.*)$ http://new.oldsite.com/$1 [R=302,L]

我还想将一些特定的子域重定向到 的文件夹,new.oldtsite.com例如. 旧子域和新目录也有可能具有不同的名称(到. :-/subdomain.oldsite.comnew.oldsite.com/subdomain/subdomain.oldsite.comnew.oldsite.com/subdomain-name/

我试图将子域的此规则复制到文件夹重定向,但这只会劫持所有重定向。

如果你能找到我的解决方法,我会给你一个虚拟的高五。

4

1 回答 1

1

让您的规则从特定到通用。通过启用 mod_rewrite 和 .htaccess httpd.conf,然后将此代码放在您.htaccessDOCUMENT_ROOT目录下:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^subdomain\.oldsite\.com$ [NC]
RewriteRule ^(.*)$ http://new.oldsite.com/subdomain-name/$1 [R=302,L]

RewriteCond %{HTTP_HOST} ^oldsite\.com$ [NC]
RewriteRule ^(.*)$ http://new.oldsite.com/$1 [R=302,L]

编辑:重定向any.oldsite.com/foonew.oldsite.com/any/foo

RewriteCond %{HTTP_HOST} ^([^.]+)\.oldsite\.com$ [NC]
RewriteRule ^(.*)$ http://new.oldsite.com/%1/$1 [R=302,L]

确认它工作正常后,替换R=302R=301. R=301在测试你的 mod_rewrite 规则时避免使用(永久重定向)。

于 2013-05-16T18:29:09.767 回答