问题出现得很突然,日志倒是留得挺全。生成脚本拼接地址时域名变量本身以双斜杠开头,输出成 https://www.example.com//post/1。提交后整份文件提示格式错误,GSC 里一条都没读进去,蜘蛛也不再来了。
刚开始盯着「生成后没有做 URL 合法性校验」,折腾了半个多小时,排掉了。
这类报错背后常见的原因有几处,逐个排除就行。域名变量末尾和路径开头各有一个斜杠。另一种情况是相对协议写法被当成完整地址拼接。
另外,部分地址是手工补的,混进了同样的错误。
上来先抓一条地址看实际输出
curl -s https://www.example.com/sitemap.xml | grep -m3 '<loc>'
然后统计双斜杠出现的数量
curl -s https://www.example.com/sitemap.xml | grep -c 'com//'
生成时统一归一化路径
preg_replace('#(?<!:)//+#', '/', $url)
等前面都确认过,再重
新
别只看报错消失,验证要多做一步。归一化后 sitemap 里不再有双斜杠,提交状态从格式错误变成已读取,一周内新增地址开始被抓。
拼接 URL 一律走库函数,手写字符串迟早多一个斜杠,而蜘蛛对这类地址是直接丢弃。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。
