如何正确进行 301 重定向

Posted

技术标签:

【中文标题】如何正确进行 301 重定向【英文标题】:How to properly make 301 redirect 【发布时间】:2018-07-30 21:27:53 【问题描述】:

我有超过 50 个 html 页面要移动到同一域中的不同文件夹中。

如何正确地为每一个进行 301 重定向?

有人说将重定向放在meta html标签中。赞这个<meta http-equiv="refresh" content="0; url=http://example.com/" />

其他人说要把它放在 .htaccess 文件中,我不确定最好的方法是什么?

我的目标是将旧网址重定向到这些网址,而不会丢失网页在 Google 中的排名。

【问题讨论】:

【参考方案1】:

重定向 301 /pagename.php http://www.testdomain.com/pagename.html

注意:旧路径只添加页面名称,新路径添加域名

【讨论】:

【参考方案2】:

如果你想要完全匹配:

redirectMatch 301 /old /new

【讨论】:

【参考方案3】:

在大多数情况下,301 重定向是在网站上实现重定向的最佳方式。使用元刷新不会让阅读实体(Google、浏览器或其他)知道它是永久性的,因此会对 SEO 产生负面影响。

301 重定向本质上意味着“永久移动”作为 HTTP 状态代码,并将被识别用于 SEO 目的。

在 .htaccess 文件中实现这一点是最有效的方法,因为这一切都在一个地方完成,不需要对所有单个文件(在您的情况下为 50 个)进行潜在的编辑。

将其作为 .htaccess 文件中的一个简单列表:

RewriteEngine on
Redirect 301 /oldfolder/file1.html /newfolder/file1.html
Redirect 301 /oldfolder/file2.html /newfolder/file2.html

或者,如果所有文件都位于一个文件夹中,您可以使用类似于下面的 ReWriteRule,这样可以更快地测试和实施:

RewriteEngine on
RewriteRule ^oldfolder/(.*)$ /newfolder/$1 [R=301,NC,L]

供参考: R=301 告诉搜索引擎重定向是永久的 NC 告诉引擎不要关心规则中的字符 L 告诉 Apache 这是最后一条规则,将避免解析/循环等

【讨论】:

【参考方案4】:

元刷新重定向与 301 重定向不同。 我也建议你不要使用它,它甚至会对你的谷歌排名产生负面影响。请使用.htaccess

有关重定向的更多信息,请read this

【讨论】:

谢谢你的文章,我现在明白了。

以上是关于如何正确进行 301 重定向的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 .htaccess 正确地将 HTTP 301 重定向到 HTTPS?

HTTP页面是如何完成301重定向的

PHP 301 重定向,不可能?

使用 PHP 进行 301 或 302 重定向

当url具有相同的基础时如何编写301重定向规则

301 是“假”子域的正确重定向代码吗?