2012-05-09 251 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

这是不幸的。如果它适用于遇到此问题的下一个人并且他们可以*使用虚拟主机,我会留下我的回答。 –