这个坑值得记一笔。站点主域是 example.com,用户实际访问 www.example.com,证书只签了带 www 的版本。IndexNow 提交时 host 填了裸域,接口返回 403,日志里看不到任何抓取。
刚开始盯着「提交的 URL 列表里混了两种主机名,整批被拒」,折腾了半个多小时,排掉了。
真正麻烦的地方在于,几个原因的现象几乎一样。IndexNow 要求提交的 host 与 key 所在主机完全一致;裸域没有证书也没有站点,回源直接落到默认站;301 把裸域跳到 www 后,接口不跟随跳转。
上来先分别验证两个主机的响应
curl -sI https://example.com/ | head -3; curl -sI https://www.example.com/ | head -3
随后统一提交带 www 的地址
curl -s -X POST https://api.indexnow.org/indexnow -H 'Content-Type: application/json' -d '{"host":"www.example.com","key":"8f3a2c1d","urlList":["https://www.example.com/post/1/"]}'
再往下检查接口返回码
curl -s -o /dev/null -w "%{http_code}\n" -X POST https://api.indexnow.org/indexnow -H 'Content-Type: application/json' -d @payload.json
末了确认裸域已 301
curl -sI http://example.com/ | grep -i location
怎么算真的好了,看的是同一批现象。统一用带 www 的主机提交后返回 200,Bing 在两天内抓取了提交的地址,裸域的 301 也保持正常。
一个站点只选一个主机名提交,混着提交看似覆盖更全,实际会让整批请求被判定为越权。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。
