2010-06-16 52 views
1

我曾一个网站,我有一个“开发URL”,看上去像这样的:Mod_Rewrite:测试URL在Google中被编入索引 - 如何创建301重定向?

www.example.com.php5-9.dfw1-2.example.com/

现在,在网站发布几周后,至少有一个内容页面在Google上通过该网址索引。

问题:如何重定向来自该测试URL的所有请求以重新路由到实际域?

所以,举例来说,我会想:

www.example.com.php5-9.dfw1-2.example.com/page-name

要进入:

www.example.com/page-name

本网站由WordPress支持并托管在PHP服务器上。我已经尝试使用.htaccess没有太多成功。

回答

1

如果www.example.com是应该是您的服务器上的唯一有效的主机名,您可以使用此规则迫使该主机名:

RewriteCond %{HTTP_HOST} !^(www\.example\.com|)$ 
RewriteCond %{HTTPS}s ^on(s)| 
RewriteRule^http%1://www.example.com%{REQUEST_URI} [L,R=301] 

否则试试这个规则只是重定向这个特定的主机名:

RewriteCond %{HTTP_HOST} =www.example.com.php5-9.dfw1-2.example.com 
RewriteCond %{HTTPS}s ^on(s)| 
RewriteRule^http%1://www.example.com%{REQUEST_URI} [L,R=301] 

你可能还检查请求方法REQUEST_METHOD因为这条规则将匹配任何方法(GET和POST)。

+0

这是_excellently_,并在一个基地,正是我所追求的。有没有办法让它重定向页面呢? 例如: www.example.com.php5-9.dfw1-2.example.com/parent-url/child-url 会重新路由到: www.example.com/parent-url/孩子网址 – 2010-06-25 13:48:05

+0

@Jonathan Wold:这应该会发生。那么会发生什么呢? – Gumbo 2010-06-25 14:15:37

+0

@Gumbo:所有请求都将它们直接转到根域。 – 2010-06-25 14:47:32

3

考虑到您对此问题的主要动机是Google将您的网页编入索引到测试服务器的事实,我相信尝试使用mod_rewrite功能来保持这些链接处于活动状态有点多余(并且很费劲)。

相反,我会建议使用Google's Webmaster Tools,并在测试地点和生产地点进行注册。然后,您应该能够请求移除测试子域下的URL,并请求抓取生产URL(从而移除测试链接并用生产链接替换它们)。