换完固定链接结构,旧地址不会自己长出跳转。默认状态下 WordPress 只保证新结构可用,旧结构那批地址要靠你自己补重定向,而且补的是 301 还是 302、放在服务器还是页面里,后果不一样。这件事要分两段看:前一段是 WordPress 怎么生成规则、后一段是搜索侧怎么对待永久重定向。核心文档只讲前一段,两段都得读才能不出错。 改结构之前,先对照固定链接的几种可选结构确认新地址,再为旧地址逐一规划跳转。

改完结构,为什么内页有时会 404
因为规则是生成出来存进数据库的,而新结构对应的规则还没生成。Rewrite API 文档写得很直白:主题和插件可以用程序指定新的自定义重写规则,这些规则通常在 init 钩子里注册;文档同时提醒,在重写改动生效之前,必须刷新固定链接,刷新可以在后台设置里的固定链接页面完成,并且需要一次性调用 flush_rules()。翻译成人话:改完设置一定要再点一次保存,光改不保存,服务器还在按旧规则找地址。flush_rules() 属于核心提供的函数,不需要额外插件。
另一类 404 来自页面本身。WordPress 遇到一篇找不到的文章时,核心可以返回 404,也可以跳到某个预设地址。到底跳不跳、跳到哪里,官方开发者文档在这几处并没有给出统一说法,要以你自己站点当前实际返回的状态码为准。排查时先看服务器日志,别看主题的代码注释。
搜索侧怎么定义永久与临时
Google 关于重定向与搜索的说明把跳转分成两类,差别很明确:永久重定向(301、308)在搜索结果里显示新的目标地址,临时重定向(302、303、307)仍然显示来源地址。它对服务器端永久重定向的表述是"只要有可能就优先用",并且在对比几种实现方式时写明,效果来得最快的是 HTTP(也就是服务端)重定向。meta refresh 里延迟为 0 的会被当成永久,延迟大于 0 会被当成临时。
还有一点值得提前知道:Google 会同时记录重定向的来源和目标,其中一个是规范地址,另一个成为该地址的另一个名称,另一个名称在某些情况下仍可能出现在搜索结果里。官方没有公布这种显现持续多久,所以别把它当成一个会自己清零的过渡状态。
| 处理方式 | 改动固定链接后适不适合 | 要注意的点 |
|---|---|---|
| 服务器端 301 | 适合,已确定不再回头 | 官方称效果最快;需要服务器配置权限 |
| meta refresh 延迟 0 秒 | 官方按永久重定向理解 | 不如服务器端直接,且影响用户浏览体验 |
| JavaScript 跳转 | 官方只在别的方式做不到时才建议 | 渲染失败时跳转可能根本没被看到 |
| canonical 标签 | 不能替代跳转 | 它是指路,不是搬路,Google 也不建议用它做站内规范页选择 |
动手的四步顺序
- 导出旧地址清单。清单来源可以是站点地图、Search Console 的链接报告,或数据库里的原始地址,这三种都要用,因为三者覆盖的范围并不相同。
- 改完结构后立刻在后台重新保存一次固定链接,让规则刷新。
- 按清单逐条写 301 规则,一条一条写,不要用一段正则一把梭——正则漏配的情况很难在事后发现。
- 把分类基址和标签基址一起核对。这一层和文章结构是同级的设置,改文章结构时最容易漏掉它。
如果重定向数量已经多到手工维护不现实,可以考虑专门的跳转管理方案;这类方案通常做的事就是生成规则、维护映射表和定期检测失效链接,核对时看它是否支持单条测试、是否记录命中次数,评测口径可参考canonical 和外链指向的 URL 有什么关系里对规范地址的判定。
这次改动不适用的两种情况
一是结构改完还想再改。连续两次结构变更等于产生两批需要长期维护的跳转链,中间那批地址可能既不是当前结构也不是最初的形态,维护成本远高于一次改到位。
二是地址并不变、只是换了展示方式。比如只是把 %postname% 换成 %post_id%,而实际 slug 本来就等于 ID,这种情况下几乎没有地址需要重定向,做整套流程属于白干。判断方法很简单:把新旧两份清单对齐,如果逐条能对上,就不用动跳转。
还有一种例外:文章被删除而不是移动。删除的页面临界做法是让它们返回真实的 404,而不是 301 到首页——把大量不存在的地址指向首页,会让抓取方拿到一堆没有对应内容的 200 响应,属于自己制造的问题。
怎么验证跳转真的接上了
验证分两轮。第一轮是机器核对:拿旧清单里的地址逐条请求,看返回码是不是 301、Location 是不是新地址、中间有没有多跳。这一步不通过,后面都不用看。第二轮是搜索侧核对,用 Google 搜索操作符的说明提到的 site: 做一次粗查,同时记住同一页的提醒:搜索操作符受索引与检索限制,调试应以 Search Console 的网址检查工具为准。Google 关于如何指定规范地址的说明也建议,站内链接应当直接指向你认为的规范地址,而不是指向某个重复版本——链接层面指对了,重定向才不必每次都依赖。
最后留一点时间余量。重定向不是上线即生效的:改动当天看到旧地址还在结果里,属于正常状态,不是方案失败。把观察窗口按周排好,比反复重发同一批规则更有效。整站搬迁场景下的处理顺序,可对照更换域名后旧外链怎么处理里的处理顺序。