我找到了许多关于应该在 .htaccess 文件中写入什么内容的不同解决方案,但由于某种原因,它们不能完美地发挥作用。
我想将旧网站的所有内容重定向到新网站 - www.oldsite.com/first/article 重定向到 www.newsite.com/first/article
等等。我听说,从 SEO 角度来看,将网站从一个域移动到另一个域时,这是永久重定向的正确方法,这样搜索引擎就不会重复内容并因此受到惩罚。
所以如果有人能提供可用的代码,那就太好了。关于为什么它会起作用以及其中的内容意味着什么的解释将属于精彩类别。
非常感谢。
PS,我已经启用了 mod_rewrite。
答案1
我高度建议 John Gruber 的使用 .htaccess 重定向来标准化 Web 服务器地址。“删除‘WWW’前缀”部分提供了您需要的简单重写的简单示例以及清晰的解释。
在他的示例中,您可以分别www\.oldsite\.com
用www\.daringfireball\.net
和www.newsite.com
替换daringfireball.net
,得到以下内容:
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.oldsite\.com$
RewriteRule (.*) http://www.newsite.com/$1 [R=Permanent]
或者,在“从‘.COM’重定向到‘.NET’”部分,他解释了如何使用 mod_alias 来执行您所要求的操作,如下所示:
RedirectMatch permanent (.*) http://www.newsite.com$1
他的文章对这两种方法进行了很好的概述,并让你知道如何选择最有效的方法(显然 mod_alias 是较短的实现,但我认为从长远来看 mod_rewrite 更灵活)。他还链接到 Dave Child 的优秀文章mod_rewrite 备忘单。
答案2
使用下面给出的代码创建一个 .htaccess 文件。它将确保所有目录和页面旧域名上的 .htaccess 文件将正确重定向到新域名。.htaccess 文件需要放在旧网站的根目录中(即索引文件所在的同一目录)
Options +FollowSymLinks
# RewriteEngine on - You have this enabled already, so this is not required.
RewriteRule (.*) http://www.newdomain.com/$1 [R=301,L]
请将上述代码中的 www.newdomain.com 替换为您的实际域名。