课程站用 WordPress 6.5 加视频插件生成 sitemap,content_loc 指向对象存储的签名地址,有效期一小时。Search Console 视频索引一直是 0,日志里这个地址全是 403。试过重新提交 sitemap 和换插件,没有变化。
真正麻烦的地方在于,几个原因的现象几乎一样。content_loc 必须能被蜘蛛无凭据访问,签名地址过期就是 403;对象存储开了 Referer 防盗链,蜘蛛请求不带 Referer 被拒;content_loc 填的是播放页地址而不是视频文件本身;视频 sitemap 的命名空间写错,整份文件被当成普通 URL 集。
直接验证视频地址
curl -sI "https://cdn.example.com/v/lesson-1.mp4" | head -5
接着看防盗链是否放行蜘蛛
curl -sI -H "User-Agent: Googlebot" https://cdn.example.com/v/lesson-1.mp4 | grep -i 'http/'
然后改成长期有效的公开地址
aws s3 presign s3://bucket/v/lesson-1.mp4 --expires-in 604800
末了核对 sitemap 命名空间
curl -s https://www.example.com/video-sitemap.xml | head -3
恢复的判定其实很直接。视频地址返回 200 且不带查询串后,两周内视频索引从零涨到六十多条,日志里的 403 全部消失。
签名地址只适合播放,不适合进 sitemap,要收录就得准备一份长期可读的副本,别指望蜘蛛替你续签。报错文案容易误导,真正的原因往往在相邻那一层的日志里。
