当前位置:首页教程学院技术教程网站重定向管理完全指南:301 / 302 / 正则 / 批量重定向

网站重定向管理完全指南:301 / 302 / 正则 / 批量重定向


🪐前言

你改了某篇文章的 URL、换了域名、或者把整个网站从 HTTP 迁到了 HTTPS——然后发现原来的链接打不开了。更糟的是,Google 收录的还是旧链接,外链导来的流量全部损失。这就是重定向没做好。

重定向是 WordPress 运维里最容易被忽视、但又最容易埋雷的环节。一个配错的重定向能让你的 SEO 排名断崖式下跌,而配置得当的重定向链则让你的网站级联迁移,访客和搜索引擎都毫无感知。

这篇文章会从头到尾讲清楚:你什么时候该用哪种重定向、怎么用 Redirection 插件批量管理、正则表达式怎么写才能一次性迁移几百个 URL、以及换域名时怎么搞全局重定向。每一步都有完整的配置截图指引和可直接复制的代码。

49-01-infographic-redirect-overview.png

一、HTTP 状态码速成:301 vs 302 vs 307

重定向的本质是服务器告诉浏览器"你要的东西不在这里,去另一个地址找"。但"不在"的原因不同,用的状态码也不同。选错状态码,搜索引擎会误解你的意图。

🔒 301 永久重定向

301 的意思是:这个 URL 已经永久搬走了,以后请直接去新地址,不用再来问我。

搜索引擎看到 301 会把旧 URL 的权重(PageRank 和外链价值)传递给新 URL。这是换域名、改 URL 结构时唯一该用的状态码。

// Apache .htaccess 301 重定向示例
Redirect 301 /old-page/ https://yoursite.com/new-page/

⏳ 302 临时重定向

302 的意思是:这个 URL 暂时不在,但以后会回来的,你别急着更新索引。

搜索引擎看到 302 会保留旧 URL 的索引,不传递权重给新 URL。用在你临时维护某个页面、促销活动页面临时指向活动规则页这种场景。永远不要在换域名时用 302——Google 会认为旧域名以后还会恢复,一直不把权重传给新域名。

🔄 307 临时重定向(现代版 302)

307 和 302 功能几乎一样,区别在于 307 保证重定向时 HTTP 方法不变(POST 请求仍然用 POST 发送)。实际 WordPress 运维中你很少需要手动指定 307,知道它是"临时重定向"就行。

✅ 快速决策

场景 用哪个
换域名 301
改文章 URL 301
HTTP → HTTPS 全站升级 301
活动页临时指向 302
A/B 测试跳转 302

🔥 一句话记忆:永久变化用 301,临时变化用 302。 如果你不确定以后会不会改回来,先按 301 处理——大不了以后再加一条 301 重定向到别的页面。搜索引擎允许你"301 之后再 301"。


二、Redirection 插件:重定向管理中心

Redirection 是 WordPress 重定向插件的事实标准,完全免费,200 万+ 活跃安装。它能做什么:

  • 手动添加单条重定向
  • 自动对修改过的文章 URL 创建重定向
  • 记录 404 错误日志(哪来的、看了哪个不存在的页面)
  • 支持正则表达式批量重定向
  • 导入/导出重定向规则

🔧 安装与基础配置

在后台插件目录搜索"Redirection",作者 John Godley,安装激活。

首次激活后会有一个设置向导:

Step 1:勾选"Monitor permalink changes in posts"——这个功能极其有用。当你修改一篇文章的 URL 时,Redirection 会自动创建一条从旧 URL 到新 URL 的 301。勾上它,以后改文章 URL 就不用手动加重定向了。

Step 2:勾选"Keep a log of all redirects and 404 errors"——打开 404 日志。过一段时间你就能看到哪些外部链接指向了不存在的页面,然后批量创建重定向。

➕ 手动添加单条重定向

进入后台 → 工具 → Redirection → 重定向。

在"来源 URL"里输入旧链接,注意只填 / 后面的部分(比如 /old-product/,不填 https://你的域名.com)。在"目标 URL"里填完整的新 URL(包含 https://)。点击"添加重定向"。

Redirection 默认创建的就是 301。如果要加 302,点击添加按钮旁边的下拉菜单,选"临时重定向"。

📊 用 404 日志反向添加重定向

进入 Redirection → 日志。这里能看到所有被访问过但返回 404 的 URL,按访问次数排序。

通常你会看到一大堆 wp-login.phpxmlrpc.php 的 404——忽略它们,这是自动扫描器在尝试攻击入口。关注那些看起来像你网站内容的 URL(路径里有 /product//blog/ 之类)。

每条日志右边有一个"添加重定向"按钮,直接点,填目标 URL,创建。不需要自己手动拼来源 URL。

📤 导出和导入

如果有多站点需要统一管理重定向规则,或者想在本地测试完再上线:

Redirection → 导入/导出 → 导出所有重定向为 CSV。拿到另一台网站后,同样路径,选择导入这个 CSV 文件。

CSV 格式如下,你可以直接用 Excel 编辑:

source,target,type,code
/old-page-1/,/new-page-1/,url,301
/old-page-2/,/new-page-2/,url,301
49-02-flowchart-redirection-plugin.png

三、正则表达式重定向实战:URL 批量迁移

假设你改了产品分类的 URL 结构。以前是 /products/产品名/,现在要改成 /shop/产品名/。你有 200 个产品,一个一个加重定向会死。

Redirection 支持正则表达式,一条规则搞定全部。

🧩 基础正则重定向模板

// 来源 URL(勾选 Regex 复选框)
^/products/(.*)

// 目标 URL
/shop/$1

解释:

  • ^/products/ — 匹配所有以 /products/ 开头的 URL
  • (.*) — 捕获 products/ 之后的所有内容,存入 $1
  • /shop/$1 — 把捕获到的内容拼到 /shop/ 后面

勾选"Regex"复选框后保存。这 200 个页面的一条规则就全部重定向了。

🔧 实战场景与正则公式

下面这些公式直接复制到 Redirection 里用,换掉示例中的路径即可。

场景一:去掉 URL 中的日期前缀

很多博客默认的固定链接是 /2023/05/09/文章名/,想改成 /文章名/

// 来源
^/\d{4}/\d{2}/\d{2}/(.*)

// 目标
/$1

场景二:从 HTTP 到 HTTPS 的全局跳转(.htaccess 方案)

Redirection 处理不了协议级别的跳转,这种用 .htaccess

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

场景三:URL 中包含中文字符需要统一转为英文

如果你之前上传的图片路径里含中文,现在要统一替换:

// 来源
^/wp-content/uploads/旧中文文件夹名称/(.*)

// 目标
/wp-content/uploads/new-english-folder-name/$1

⚠️ 正则重定向的三个注意点

🔴 正则匹配永远先做"模拟测试"。Redirection 在添加正则规则时,输入框下方有一个测试区域,先输入几个真实 URL 看匹配结果是否正确。一次性把 200 个产品页面全都重定向到首页(因为正则写错了),搜索引擎会判定你在作弊。

🟡 正则规则按顺序匹配。Redirection 里的多条规则从上往下依次判断,匹配到第一条就停。把更精确的规则放在上面,通用规则放下面。比如你已经给 /products/special-item/ 手动加了一条单独重定向,把正则 ^/products/(.*) 放在它的下面。

🟢 性能考量:Redirection 的规则在每次 WordPress 请求时都要逐一匹配。几百条没问题。如果你有几千条正则规则,会影响网站速度。超过 500 条正则建议写到 .htaccess 里,不走 PHP。

49-04-framework-regex-patterns.png

四、换域名后的全局重定向策略

换域名是重定向的最典型场景——你要把旧域名上所有页面都指向新域名上的对应页面,一条都不漏。

🌐 在旧域名服务器上配置全站 301

这是最底层的全站重定向方法。在你的旧域名主机的 .htaccess 文件最顶部加上:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^old-domain\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.old-domain\.com$
RewriteRule (.*)$ https://new-domain.com/$1 [R=301,L]

这段规则的意思是:不管访客访问旧域名的哪个页面(包括首页、内页、带参数的 URL),都 301 跳转到新域名完全相同的路径。

如果旧域名和新域名的 URL 结构完全一致(你只是换了域名,没改固定链接结构),这条规则就够了,不需要再装 Redirection 插件做逐条重定向。

🧩 URL 结构也变了怎么办

如果你换域名的同时也改了 URL 结构(比如 /product/xxx 变成了 /shop/xxx),需要在 .htaccess 全站 301 之上再加一层 Redirection 的映射规则。

流程如下:

  1. 先在旧域名的 .htaccess 顶部加上上面的全站 301 规则
  2. 在新域名的网站上安装 Redirection
  3. 在 Redirection 里批量导入旧 URL → 新 URL 的映射 CSV

映射 CSV 可以从旧网站的 sitemap 里提取旧 URL,再加上对应的新 URL。这个 CSV 可以在 Excel 里用 VLOOKUP 批量生成。

⏰ 旧域名要保留多久

  • 最低 6 个月:Google 完成重索引 + 外链更新的最低周期
  • 推荐 1-2 年:给你足够时间通知所有外部平台更新链接
  • 之后:检查 Google Search Console → 旧域名的流量是否降到接近 0。确认后可以让旧域名过期,或者续费但不再托管网站(只保留域名,防止被别人抢注冒充你)

五、重定向链和重定向循环的排查

重定向本身没问题,但多个重定向串起来形成"链",或者两个页面互相指向形成"循环",就会出问题。

⛓️ 重定向链

重定向链是指:A → B → C → 最终 D。每次跳转浏览器都要发起一次新的 HTTP 请求,多跳一次就多 200-500ms 延迟。Google 建议重定向不超过 1 次(即 A 直接到最终目标)。

如何检测:用 Chrome 开发者工具(F12)→ Network 标签页,勾选"Preserve log"。输入旧 URL 并回车,看文档请求的 Status Code 列。如果看到 301 → 301 → 200,中间有两个 301,说明有重定向链。

如何修复:在 Redirection 里把 A → B 和 B → C 两条规则,合并成 A → C 一条。删掉 B → 的旧规则。

🔴 重定向循环

循环是指 A → B,B → A。浏览器检测到循环后会停下来显示"Too many redirects"错误,用户什么都看不到。这比链严重得多,意味着页面根本无法访问。

常见原因

  • HTTPS 配置错误:服务器配置了 HTTP → HTTPS 的跳转,但 SSL 证书有问题,导致 HTTPS 又跳回 HTTP
  • WordPress 地址设置错误:后台 → 设置 → 常规里的 WordPress 地址和站点地址,一个带 www 一个不带
  • Redirection 里 A 指向 B,B 又指向 A
  • 主题或插件里的代码强制做了重定向,跟 Redirection 或 .htaccess 冲突

排查方法

  1. 先停用 Redirection 插件(重命名插件目录)
  2. 如果循环消失——问题在 Redirection 的规则 → 逐条审查
  3. 如果循环还在——检查 .htaccess 里的 RewriteRule(临时清空 .htaccess 然后逐步恢复)
  4. 如果还没解决——检查主题 functions.php 里有没有 wp_redirect() 调用
// 常见的会引发循环的代码(放在主题 functions.php 里的这种代码不要写)
// wp_redirect( home_url() ); exit;
// 如果当前页面已经是首页,这句代码会让首页无限跳转自己

🧪 批量检测工具推荐

  • Screaming Frog SEO Spider(免费版支持 500 个 URL):输入你的网站首页,它会爬取所有内链并标注每条的重定向状态和链长度
  • Ahrefs Webmaster Tools(免费):自动检测你网站上的重定向链
  • httpstatus.io:一次性输入多个 URL 批量检测重定向路径
49-03-flowchart-redirect-chain.png

六、重定向的 SEO 注意事项

重定向配好了,但 Google 的态度也会影响最终效果。以下是几条经过验证的实践:

Google 把 301 权重传递视为接近 100%,但不是完全等价。 就是说旧页面的排名不太会打折扣,但换域名初期新域名可能需要数周到数月才能完全恢复旧域名的排名位置。这是正常的,不是你做错了。

改 URL 后一定要更新内部链接。 很多人在后台改了文章固定链接,加了 301 重定向,然后就不管了。搜索引擎通过重定向也能找到新页面,但内部链接直接更新为新 URL 比走重定向快得多。用 Better Search Replace 或直接在数据库里替换。

Sitemap 必须更新。 换域名或大量改 URL 后,重新生成 sitemap 并提交到 Google Search Console。不要等 Google 自己爬重定向发现新 URL——你告诉它新 URL 在哪里,它会更快接受。

不要用 Meta Refresh 或 JavaScript 重定向做 SEO 迁移。 搜索引擎不一定执行 JavaScript,Meta Refresh 传递权重极其有限。永远用服务器端 301。


总结

重定向管理的核心就三句话:知道什么时候用 301 什么时候用 302、用 Redirection 插件集中管理而不是到处写、用正则批量处理而不是逐条手写。

  • 🔒 301 用于永久变化、传递 SEO 权重;302 用于临时变化、保留旧索引。
  • 🛠️ Redirection 插件是管理中心的唯一选择:手动添加、自动监听改 URL、404 日志反建重定向、CSV 批量导入导出。
  • 🧩 正则表达式一条规则解决几百条重定向^/old-path/(.*)/new-path/$1 是最常用的模式。
  • 🌐 换域名的全局重定向:旧域名 .htaccess 加全站 301 规则 + 新域名 Redirection 映射表。
  • ⛓️ 链和循环是静默杀手:定期用 Screaming Frog 或 httpstatus.io 扫一遍,把 A → B → C 合并为 A → C。
  • 🔍 内部链接和 Sitemap 要同步更新:别全靠重定向,主动告知搜索引擎。

官方求助路径

  • Redirection 插件官方支持:https://wordpress.org/support/plugin/redirection/ —— 作者 John Godley 亲自回复,响应很快
  • Redirection 官方文档:https://redirection.me/support/
  • Apache mod_rewrite 官方文档:https://httpd.apache.org/docs/current/mod/mod_rewrite.html
  • Google 站点迁移指南:https://developers.google.com/search/docs/crawling-indexing/site-move
  • Screaming Frog 重定向检测教程:https://www.screamingfrog.co.uk/seo-spider/user-guide/configuration/#Redirects

版权声明

   站内部分内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供网络资源分享服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请 联系我们 一经核实,立即删除。并对发布账号进行永久封禁处理。在为用户提供最好的产品同时,保证优秀的服务质量。


本站文章90%为原创内容,拥有所有权,转载时请加上所属。

给TA打赏
共{{data.count}}人
人已打赏
技术教程

WordPress临时站点(Staging)搭建:安全测试不碰生产环境

2026-5-15 2:39:30

技术教程

WordPress Cron与定时任务:让你的网站自动运转

2026-5-15 2:39:31

6 条回复 A文章作者 M管理员
  1. 罗丹

    之前搞过这个,确实折腾了好久,正则写错差点把全站重定向到首页

  2. 甜豆奶

    301 和 302 的区别终于有人说明白了,之前一直稀里糊涂的

  3. 竹露清茶

    Redirection 那个自动监听改 URL 的功能太实用了,之前都是手动加,烦死

  4. 糖霜糖

    那个啥,换域名后旧域名得留至少半年,我之前提前停了,外链全废了 😭

  5. 荷花

    求问,如果我用 Cloudflare 的话,全站 301 是不是直接在那上面配更省事?

  6. 社恐小风扇

    正则那部分写得挺清楚,但万一 URL 里有问号参数咋整?

购物车
优惠劵
今日签到
搜索