在Apache 301重定向中设置主机和路径

时间:2011-05-30 16:05:48

标签: apache .htaccess

我需要将http://oldsite.com/some/content重定向到.htaccess中的http://newsite.com/some/content,但仅限于该页面(嗯,两页,具有相同的想法)。

从我所看到的情况来看,301重定向不占用主机,只占第一个参数中的路径,

Redirect 301 /some/content http://newsite/some/content

不会起作用,因为oldsite.com是newsite.com的ServerAlias(可能不理想,但那部分不在我手中),而且似乎上面的规则会导致重定向循环。

实现这一目标的最佳方法是什么?我不能使用PHP解决方案,因为重定向需要在同一个.htaccess中的另一个规则之前执行。

1 个答案:

答案 0 :(得分:1)

您可以设置env变量来标识网站,例如:

SetEnvIf default-site ^ site=new
SetEnvIfNoCase Host ^oldsite\.com$ site=old

...并使用mod_rewrite执行条件重定向:

RewriteCond %{ENV:site} =old [NC]
RewriteRule ^(.*)$ http://newsite.com%{REQUEST_URI} [NE,R=permanent,L]