什么是 301 重定向以及如何在 WordPress 上配置它
已发表: 2018-07-25301 重定向正在转发。 它用于将用户重定向到与他们最初请求的 URL 不同的另一个 URL(页面或站点条目)。 例如,如果地址栏中的人在正确配置时正在写 your-site.com,它将转到 www.your-site.com,反之亦然。
此外,我们将帮助您实施这些重定向,同时保留您现有的流量和 SEO。
五种类型的 URL 重定向
- 301 – 永久重定向。 用于告诉搜索引擎该页面已经永远改变了它的位置。 在 99.44% 的情况下,您将使用这种类型。
- 302 - 临时重定向。 用于告诉搜索引擎该页面目前已更改其位置,而不是永远更改。
- 303 - 见其他重定向。 有时它在在线商店中用于检查具有一次性数据的页面是否已添加到选项卡或只是更新。 此响应代码告诉浏览器,请求的文档需要通过 GET 方法请求,即使原始查询是由另一种方法执行的。 这是为替换 HTTP/1.1 协议中的 302 代码而输入的响应代码。
- 307 - “请求的文档在不同的 URI 上可在短时间内使用”,告诉浏览器请求的文档需要通过主请求的方法(GET / POST)来请求,更改查询方法被禁止。 也输入了这个响应码来代替 HTTP/1.1 协议中的 302 码。 临时重定向。 它的工作方式类似于 303 重定向,但信息从一个页面传输到另一个页面的方式发生了一些变化。
- 308 - “请求的文档最终迁移到了新的 URI”,这个响应代码被添加到 HTTP / 1.1 而不是代码 301,另外它意味着当一个新的请求方法(GET / POST)不允许改变URI 已迁移。 如果您在第一个查询中使用 GET 方法请求了资源,那么第二个查询也必须使用 GET 方法执行。
最常见的重定向,应答码是 301,所以重定向也称为 301 重定向。 本文中的所有示例都将使用此响应代码。 您可以通过不同的方式配置 301 重定向:PHP、JS、.htaccess,也可以使用特殊插件。
我们将看看如何使用重定向插件执行此操作,以及编辑 .htaccess 文件。
WordPress 重定向插件
手动向站点添加重定向的过程可能非常复杂,因为在这种情况下,需要编辑 .htaccess 文件。 但是在 WordPress 世界中,John Godley 提供了一个很棒的重定向插件,它可以直接在 WordPress 控制台中处理重定向。
这个插件已经上市很长时间了,并且很受欢迎,因为它很容易将地址列表导入到表格中,因此您不必手动输入所有重定向。
要安装插件,只需在插件中的搜索中输入“重定向”→在您的 WordPress 控制台中添加新的。
激活后,您可以通过工具→重定向找到插件菜单。
要手动创建重定向,只需在相应字段中输入源 URL 和新目标 URL,然后单击“添加重定向”按钮。 当您只需要进行一些更改时,这是一种出色而简单的方法。
通过编辑 .htaccess 文件添加 301 重定向
在主机管理部分,指定通过 FTP 连接到您的站点文件的数据。 要连接,您需要使用 ftp 客户端,例如 FileZilla。
连接后,我们开始编辑 .htaccess 文件。 它位于您网站的根目录中。
对于编辑,有必要使用这样的代码编辑器,其中可以指定行尾的编码和格式,例如 Notepad ++。
重定向示例:

HTTP 到 HTTPS 重定向
将 http://example.com 重定向到 https://example.com,包括所有网站链接:
连接 ssl 证书后,您应该添加从 http 到 https 的强制重定向,以便加密所有连接。 这样的重定向将排除通过 http 协议进行连接的可能性。
为此,请在 .htaccess 文件的最开头插入以下代码:
# BEGIN Redirect RewriteEngine On RewriteCond% {HTTP: X-Forwarded-Proto}! Https RewriteRule ^ (. *) $ Https: //% {HTTP_HOST}% {REQUEST_URI} [L, R = 301] # END Redirect
WWW 到非 WWW 重定向
从 www.example.com 重定向到 example.com,包括链接:
# BEGIN Redirect RewriteEngine On RewriteBase / RewriteCond% {HTTP_HOST} ^ www. (. *) $ [NC] RewriteRule ^ (. *) $ Http: //% 1 / $ 1 [R = 301, L] # END Redirect
请注意,如果您附加了 ssl 证书,则该行:
RewriteRule ^ (. *) $ Http: //% 1 / $ 1 [R = 301, L]
值得更改为:
RewriteRule ^ (. *) $ Https: //% 1 / $ 1 [R = 301, L]
非 WWW 到 WWW 重定向
# BEGIN Redirect RewriteEngine On RewriteCond% {HTTP_HOST}! ^ Www. RewriteRule ^ (. *) $ Http: //www.% {HTTP_HOST} / $ 1 [R = 301, L] # END Redirect
请注意,如果您附加了 ssl 证书,则该行:
RewriteRule ^ (. *) $ Http: //www.% {HTTP_HOST} / $ 1 [R = 301, L]
值得更改为:
RewriteRule ^ (. *) $ Https: //www.% {HTTP_HOST} / $ 1 [R = 301, L]
设置此重定向时,您需要通过添加 www 更改数据库中站点的名称。 您需要通过编辑行在 phpMyAdmin 中执行此操作
wp_options 表中的 siteurl 和 home(如果数据库中的表前缀是“wp_”)。
在 .htaccess 文件中使用重定向
如果您想使用上述几个重定向,您应该按以下顺序编写它们:
从 www.example.com 重定向到 example.com 或将 example.com 重定向到 www.example.com。
将 http://example.com 重定向到 https://example.com。
还有许多其他规则,特别是使用正则表达式。 但它们是单独的,不需要像上面描述的那样频繁,它们的描述超出了本文的范围。
如果您需要编写更复杂的重定向规则,我们建议您查看 apache 2 Web 服务器及其 mod_rewrite 模块的文档,以及 PCRE 格式的正则表达式:
https://httpd.apache.org/docs/2.4/mod/mod_rewrite.html
https://httpd.apache.org/docs/2.4/rewrite/
http://pcre.org/current/doc/html/