.htaccess文件中如何进行301重定向,将旧域名重定向到新域名,同时保持页面和URL结构不变。

12

我想将所有网址从旧域名 http://olddomain.com 重定向到新域名 http://newdomain.com,并保持页面内容不变。也就是说,像下面这样的URL:

http://olddomain.com/home/category/page.html
http://olddomain.com/home/mybook/page2.html
http://olddomain.com/login

should be 301 redirect to the new newdomain but same pages, like below

http://newdomain.com/home/category/page.html
http://newdomain.com/home/mybook/page2.html
http://newdomain.com/login

这是我目前在我的.htaccess文件中拥有的内容

RewriteEngine on
RewriteCond $1 !^(index\.php|img|public|robots\.txt) [NC]
RewriteRule ^(.*)$ /index.php?/$1 [L]
请帮助我以简明的方式完成这个任务,并详细解释,因为我是新手。
还有,有人知道搜索引擎需要多长时间才能将我的旧域名的参考资料移除吗?我的意思是在搜索查询中,旧域名的URL应该被新域名的URL替换... 旧域名应该从搜索引擎中消失。

我很高兴接受,:) 让我检查一下...希望它能正常工作 :) - asm234
4个回答

26
在 .htaccess 文件的开头添加以下代码 -
    RewriteEngine On

    # Redirect Entire Site to New Domain
    RewriteCond %{HTTP_HOST} ^olddomain.com$ [OR]
    RewriteCond %{HTTP_HOST} ^another.olddomain.com$ [NC]
    RewriteRule ^(.*)$ http://newdomain.com/$1 [R=301,L]

好的,让我检查一下。不过,你知道搜索引擎需要多长时间才能将我的旧域名的引用移除吗?我的意思是,搜索查询中的旧域名URL应该被新域名URL所替换...旧域名应该从搜索引擎中消失。 - asm234
了解Matt Cutts -“所有页面都从dullest.com迁移到mattcutts.com。至少对我来说,301重定向的效果恰如我所预期的。” 链接-http://www.webpagemistakes.ca/301-redirects-what-you-need-to-know/ - Parag Meshram
简而言之,至少谷歌将从搜索引擎中删除旧域名。不确定需要多长时间。这取决于搜索引擎对您的网站进行爬行的频率。 - Parag Meshram
“因为我也是新手,所以请详细解释一下” - “another.olddomain.com” 为什么是必需的? [OR] 和 [NC] 代表什么?(如果您能解释一下就太好了) - Mars Robertson
尽管这个答案是正确的,但我认为它相当不切实际,因为如果你删除"another.olddomain.com"这一行,它将会创建一个无限循环。所以如果你是新手:如果你不想使用"another.olddomain.com"这一行,请从第一行中删除[OR]。 - Florian Rachor

8

简单得多:

Redirect 301 / http://newdomain.com/

将您的.htaccess文件替换为该单行代码,或者如果您可以访问它,请将其放入旧域的Apache conf文件中(我在DocumentRoot指令后放置它)。
有关更多信息,请参见使用mod_rewrite进行重定向和映射

这是最佳答案。我们可以使用此链接不使用mod_rewrite的情况(第一个示例)来完善文档信息。 - Zimmi

1
我通常在旧网站的.htaccess文件中添加以下代码。
#Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*)$ http://newdomain.com/$1 [R=301,L]

上述代码将重定向所有链接到新域,您不需要做任何事情,每个链接和图像都会重定向到新域链接。 此外,我们还需要告诉Google您的网站何时移动。
如果您将站点移动到新域,您可以使用地址更改工具告诉Google您的新URL。我们将更新我们的索引以反映您的新URL。更改将保持有效180天,在此期间,我们将爬行和索引您的新URL的页面。 这是链接https://support.google.com/webmasters/answer/83106?hl=en
我已经为2到3个网站完成了此操作而没有失去SEO。 它确实有效。 谢谢

0

尝试做了

LoadModule rewrite_module modules/mod_rewrite.so
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{HTTP_HOST} ^localhost$ [NC]
  RewriteRule ^(.*)$ http://newdomain.com/$1 [R=301,L]
</IfModule>

但是它没有按照应该的方式工作,我只是试图将我的本地主机指向newdomain.com。

但是当我访问localhost时,它仍然没有指向。


这应该是一条注释,而不是代码。 - rhand

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接