固定链接结构写成 /%post_id%/%postname%/,最新一篇是 1847,别人把数字减一挨个访问,就能把没公开的草稿和附件编号全试出来。第一次遇到会往复杂处想,其实漏掉的多是个小前提。

wp option get permalink_structure
wp option update permalink_structure '/%postname%/'
wp rewrite flush --hard

自增 ID 连续且不复用,链接里的数字直接暴露站点发了多少内容。附件和草稿也占 ID,空号对应的是已删除或未发布的内容。这一点先确认清楚,后面就不用反复试。

碰到「post_id 固定链接」这类问题,我习惯先把当前配置原样备份一份,改坏了立刻换回来,不用现场推。临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。

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

具体做法是,固定链接改成只带别名,或用 /%postname%/ 这类不含 ID 的结构;已有链接保留 301 到新地址,别直接断掉;附件页统一跳回所属文章,别让 /attachment/ 单独可访问;检查 REST 接口和 feed 里有没有把 ID 顺带输出。

改完照着核一遍,新文章地址里不再出现连续数字,旧地址 301 到新地址,附件页跳回文章正文。

作者 9823189