2012-05-09 211 views
0

我已經將我的舊網站移動到新的域名,但谷歌仍然顯示我以前的鏈接,所以我做了一個htaccess文件,並作出301重定向。以下是我的htaccess代碼:301重定向通過htaccess

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^old.com$ [OR] 
RewriteCond %{HTTP_HOST} ^www.old.com$ 
RewriteRule (.*)$ http://new.com/$1 [R=301,L] 

它將舊的url重定向到新的url,但它並不是逐頁執行。意思是如果我要去www.old.com/about.php,那麼它會將我重定向到www.new.com/,但我希望www.new.com/about.php出現。

你能告訴我如何用最少的工作使用正確的正則表達式來做到這一點?

+0

刪除old.com後的$,表示字符串的結尾(並用/about.php結尾還沒有) –

回答

1

這將保持一切 - 查詢字符串和請求路徑:

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^old.com$ [OR] 
RewriteCond %{HTTP_HOST} ^www.old.com$ 
RewriteRule ^(.*)$ http://new.com/$1 [R=301,L,QSA] 
+0

對於某些頁面,它沒有正確重定向。頁面被重定向到新域名的主頁 –

+0

@Durga Dutt:「有些頁面」根本沒有幫助的解釋。我使用它幾年沒有問題 – zerkms

1

您不需要使用mod_rewrite在所有。只需使用:

<VirtualHost *:80> 
    ServerName old.com 
    ServerAlias www.old.com 
    Redirect permanent/http://new.com/ 
</VirtualHost> 

Redirect指令自動保存在/後什麼。

+0

但是,這確實需要添加'VirtualHosts'(並非所有共享主機提供商都允許)。 – Amber

+0

是的,我有一個共享的主機,這是不允許的 –

+0

這是不幸的。如果它適用於遇到此問題的下一個人並且他們可以*使用虛擬主機,我會留下我的回答。 –