标签页地址直接输出中文,浏览器自动编码成 %E6%9C%8D%E5%8A%A1%E5%99%A8,站内另一处链接用了原始中文,蜘蛛把同一个标签当成两个页面。

原因不止一个,得分开看。模板输出标签链接时没有统一做 URL 编码。也可能是部分旧链接是手工写的中文地址。

另外,canonical 按原始中文输出,与浏览器实际访问的编码地址不一致。

先对比两种写法的返回码

curl -sI 'https://www.example.com/tag/服务器/' | head -2

模板统一用编码后的地址

echo get_tag_link($tag->term_id);

canonical 同步使用编码地址

curl -s 'https://www.example.com/tag/%E6%9C%8D%E5%8A%A1%E5%99%A8/' | grep -o '<link rel="canonical"[^>]*'

旧中文地址 301 到编码地址

curl -sI 'https://www.example.com/tag/%E6%9C%8D%E5%8A%A1%E5%99%A8/' | head -2

这次没动代码,只在配置和运行环境上找原因。

隔了一天再看,现象没变,说明不是偶发。

那几天正好在做别的变更,先把时间线对齐才敢动手。

改完先别撤,确认这几项。统一编码后同一标签只剩一条地址,标签目录的重复页面在两周内消失。

中文标签最好直接改成英文或拼音别名,编码问题从源头就没有了。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。

作者 9823189