静态网站一更新,旧页面被删掉,但搜索引擎里还能搜到,点进去要么404,要么跳到新页面。这种情况很常见,处理起来也不复杂,关键是让搜索引擎知道旧URL已经不存在了。
先确认旧页面现在返回什么状态码。用curl -I 旧网址,或者在线HTTP状态检查工具。如果返回200,说明服务器还在正常响应,搜索引擎会认为页面没变,自然不会删除。静态托管平台有时会配置SPA回退,把所有未知路径都返回首页200,这最麻烦。需要改配置,让旧路径返回404或410。410比404更明确,表示永久删除。比如Netlify可以在_redirects里写 /old-page/ 410,Vercel在vercel.json里配置。GitHub Pages默认对不存在的文件返回404,但如果你有自定义404.html,它返回的是404状态码,没问题。
如果旧页面还能访问,但内容已经不要了,可以在页面里加noindex meta标签,或者服务器返回X-Robots-Tag: noindex。不过noindex需要搜索引擎重新抓取才会生效,可能等几周。更快的办法是同时用搜索平台的移除工具。
Google Search Console 有个“移除”功能,可以提交临时移除请求。输入旧URL,请求通过后,搜索结果里会隐藏大约6个月。这期间你得让旧页面返回404/410或noindex,否则6个月后可能又冒出来。Google还有“移除过时内容”工具,专门处理已经删除的页面。如果旧URL确实返回404/410,用这个工具提交,通常几小时到一天就能从搜索结果里去掉,比临时移除更彻底。
Bing Webmaster Tools 也有类似功能,叫“内容移除”或“URL提交”。提交后一般几天内处理。百度搜索资源平台用“死链提交”,需要把返回404的旧URL整理成死链文件,提交上去。百度处理死链通常要一周到一个月,急的话可以试试“快速删除”,但那个一般留给严重违规内容。360和搜狗也有站长平台,操作逻辑差不多。

更新sitemap很重要。把旧URL从sitemap里删掉,只保留新页面,然后重新提交。搜索引擎抓取新sitemap后,会慢慢发现旧URL不在了。别在robots.txt里屏蔽旧目录,很多人以为屏蔽了搜索引擎就不抓,其实相反:屏蔽后爬虫看不到页面上的noindex,也看不到404,反而可能一直保留旧索引。正确做法是让旧URL可访问但返回404/410,或者返回noindex。
如果旧页面有外链,直接删掉可能浪费权重。内容迁移到新URL的话,最好做301重定向。301会告诉搜索引擎页面永久搬家,旧搜索结果会逐渐替换成新URL。如果内容彻底不要了,就用410。301和410不要混用,一个旧URL只能选一种。
CDN缓存也得清。用了Cloudflare、又拍云、七牛这类服务,旧文件删了,CDN边缘节点可能还缓存着,用户和爬虫访问还是200。去CDN控制台刷新缓存,或者等缓存过期。检查响应头里有没有cf-cache-status: HIT,有的话就是缓存没清。
内部链接也要改。网站导航、文章里的旧链接,如果还指向已删除的URL,爬虫会不断抓取,拖慢删除速度。用工具扫一下站内死链,全部换成新URL或去掉。
时间上别太急。Google通常几天到几周更新索引,移除工具请求快则几小时,慢则一两天。百度死链提交后,一周到一个月都算正常。Bing大概几天。如果旧页面被大量转载或外链,消失得会更慢。
最后提醒一句:别用JS跳转代替301。搜索引擎对JS跳转的处理不一致,可能根本不执行,旧URL还是被当作有效页面。也别用meta refresh,效果类似。老老实实配置服务器状态码,配合搜索平台的工具,旧搜索结果就会慢慢清掉。