改版后文章页模板里的相关推荐写成 ../guide/,从 /tech/db/post-1/ 解析出来是 /tech/guide/,日志里这批地址全 404,来源页正是文章本身。试过在 nginx 加 rewrite 兜底,路径对不上,没用。

排查方向其实有限,先把可能性排一排。相对路径以当前目录为基准,页面层级一变解析结果就偏;模板没有声明 base,深层目录和浅层目录算出来的地址不同;编辑在富文本里手写 ../,发布后原样输出;伪静态把目录加深了一层,旧写法整体失效。

从文章页提取内链验证

curl -s https://www.example.com/tech/db/post-1/ | grep -o 'href="\.\./[^"]*"' | head

批量替换成站内绝对路径

wp search-replace 'href="../' 'href="/' --all-tables --precise

复核模板里是否还有相对写法

grep -rn 'href="\.\./' /var/www/html/wp-content/themes/ | wc -l

末了抽查深层页的内链状态

curl -s -o /dev/null -w "%{http_code}\n" https://www.example.com/tech/guide/

别只看报错消失,验证要多做一步。相关推荐全部改成 /guide/ 这类根路径后,日志里的 404 从每天两千条降到个位数,深层文章的抓取恢复。

相对路径在单层目录里能跑,一旦改版加层级就集体失效,内链统一用根路径最省事。拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。

作者 9823189