新建一篇标题相同的文章,别名自动填成 hello-world-2,原来那篇的 /hello-world/ 打开却是 404。两篇内容完全不同,读者根本分不清。碰到这种情况,我一般先确认改动有没有真的生效。

原因不复杂,post_name 在同一 post 类型里必须唯一,重名时 wp_unique_post_slug 会往后加 -2、-3。旧文章如果同时改了别名,原地址就没有任何记录指向它了。

碰到「post_name 后缀 -2」这类问题,我习惯先把当前配置原样备份一份,改坏了立刻换回来,不用现场推。改完顺手把文档补一句,省得下次自己重新推一遍。

SELECT ID, post_name, post_status, post_date
FROM wp_posts
WHERE post_name LIKE 'hello-world%'
ORDER BY post_date ASC;

监控和日志的时间要对上,时区不一致会多绕很大一圈。临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。

动手前把原文件复制一份带时间戳,出问题立刻换回去,比现场分析快得多。

具体做法是,先查所有同前缀的 post_name,确认哪一篇占着干净的那个;新文章换成有区分度的别名,别依赖自动加的后缀;旧地址加 301 指向新文章,别让它裸着返回 404。

最后用这个标准收尾,两篇文章别名各不相同,访问旧地址会 301 跳到对应正文。

作者 9823189