2010-06-16 51 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(從而移除測試鏈接並用生產鏈接替換它們)。