你刚做完301重定向,结果搜旧链接还能点开,新页面却像被搜索引擎拉黑了一样——流量没来,收录没动,连百度站长平台里的“已编入索引”都灰着。别怀疑自己配置错了,这事儿太常见了,我上周还帮一个做医疗器械SEO的朋友揪出个藏了三个月的301假跳转。
你的301真的生效了吗?先检查这几个细节
很多人改完.htaccess或Nginx配置就关页面,但301不是写完就跑的代码,它得从浏览器请求开始,一路畅通无阻地走到目标页。
第一步,打开浏览器按F12,切到Network面板,直接访问旧URL,看第一行响应状态码是不是301 Moved Permanently。很多WordPress插件、伪静态规则默认打的是302 Found,搜索引擎根本不认这个,权重一毛不传。
第二步,点开那个301跳转后的地址,确认它真能打开。比如你把/product/a重定向到/products/item-a,但后者返回404——那等于在高速路口立了个“前方施工”的牌子,车开过去发现路早塌了。
第三步,换几个网络环境再测一次。有些CDN只在华东节点缓存了错误响应,你在杭州测是301,在广州测却是200。用站长工具里的“多地检测”功能,或者让同事用手机热点试一下。
为什么你的301重定向被搜索引擎“无视”了?
搜索引擎不是收到301就立刻执行的机器人,它更像一个老练的编辑:看到你说“这稿子移到新栏目了”,先翻翻旧稿的阅读量、转发数、读者留言,再决定信不信你。
我们处理过一个法律咨询网站迁移,旧站有2000多个问答页,全做了301。两个月后只有不到1/5的页面在搜索结果里显示新URL。原因很简单:那些旧问答常年排在首页,用户习惯点进去,搜索引擎就拖着不换链接,怕影响点击体验。
这时候光等不行。你得在旧页面顶部加一行显眼提示:“该内容已迁移至新页面”,再配合<meta http-equiv="refresh" content="0;url=https://new.example.com/page">做兜底——不是为了替代301,而是告诉用户和爬虫:“这次真搬走了”。
另外,去Google Search Console提交旧URL的“移除请求”。注意选“临时移除”,不是永久删除。相当于跟谷歌说:“这页已经作废,请别再展示它了”,它反而会更快去验证你的301是否有效。
还有一个容易被忽略的点:如果旧页面太久没被爬过,你的301指令可能一直躺在谷歌的待办清单里。这时候要主动推一把——在Search Console里手动提交旧URL的“重新抓取”,或者在新站的sitemap.xml里保留旧链接的<lastmod>时间戳,让它知道:“这事儿还没完,还在处理中”。
服务器配置导致301“假死”的3个常见坑
最典型的翻车现场:Nginx配置里,return 301那行代码写在了server块里,而不是某个location里。结果所有请求,不管访问啥路径,全被甩到首页去了。用户点旧文章,跳转到首页;点旧分类页,还是跳首页。
第一个坑:.htaccess里堆了太多重定向规则。比如你装了Yoast SEO又装了Redirection插件,两个都在管301,后加载的规则直接覆盖前面的。解决方法很粗暴:进后台停掉一个插件,再用文本编辑器打开.htaccess,搜Redirect和RewriteRule,删掉重复或冲突的行。
第二个坑:HTTP→HTTPS和旧域名→新域名的顺序搞反了。比如先做old.com → new.com,再做http://new.com → https://new.com,中间就会卡在http://new.com这个不安全链接上,部分浏览器直接拦截,爬虫也不认。正确顺序是:先统一协议(HTTP全跳HTTPS),再统一域名(HTTPS下的旧域跳新域)。
第三个坑:CDN缓存了301响应本身。你服务器早就改好了,但Cloudflare或腾讯云CDN节点还记着上周的跳转地址。进CDN后台,找到“缓存清理”页面,清空整个域名的缓存;或者在Nginx里加一句:
add_header Cache-Control "no-cache, no-store, must-revalidate";
如何用“301链”快速排查批量失效?
别一个个手敲URL去测。你日常就在用的工具就能干这事——比如Screaming Frog(免费版够用),或者国内站长更熟的百度资源平台“死链提交”里的“抓取诊断”功能。
操作很简单:
- 第一步:导出旧站所有URL(可以从旧站sitemap.xml、百度站长的“索引量”数据里扒);
- 第二步:在Screaming Frog里设置User-Agent为
Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html),然后批量导入URL; - 第三步:跑完后筛选“Status Code”列,重点盯两类:返回
200的(说明根本没跳转)、返回404的(说明目标页挂了)。
发现批量异常?先别急着改服务器。有个真实教训:某医疗资讯站大促期间服务器CPU飙到95%,部分请求超时后直接返回200首页。后来我们在凌晨三点低峰期重跑一遍,问题全没了。所以记得:同一组URL,换个时间再测一次。
301生效后,权重转移为什么还是慢?
301不是快递签收单,点了“已送达”,搜索引擎还得慢慢核对包裹里是不是真有货、货够不够分量。
我们帮一个工业设备B2B网站做迁移,旧站每个产品页都有几十个来自行业协会、展会官网的外链,新站上线半年,排名还在原地打转。最后发现:所有外链还指着旧URL,新页面零外链。搜索引擎看着这堆“权威投票”,心里犯嘀咕:“你们真换地方了?还是只是做个跳转骗权重?”
解决办法就两条:
- 主动联系5–10个高权重外链来源(比如行业媒体、协会网站),请他们把链接更新成新URL;
- 在新站首页、导航栏、相关产品页之间,快速补上3–5条高质量内链,比如在“关于我们”页加一句:“我们的核心产品线已全面升级,查看最新[XX设备系列]”。
还有一点常被忽略:301权重传递只认“直达”。如果你的跳转链是旧页 → CDN 302 → 新页,那中间那个302就是断头路。用命令行敲:
curl -I https://old.example.com/product
看返回里有没有不止一个Location:头。理想情况是:一次301,直接跳到最终地址,中间不拐弯。
结尾:今天就能执行的1个排查步骤
打开你正在用的百度搜索资源平台(或Google Search Console),进入“网页索引” → “索引覆盖率”,筛选出状态为“已编入索引”的旧URL。点开任意一条,选择“检查URL”,在右侧点“请求重新收录”。每天最多提交10条,但连续做5天,你会发现旧URL的索引状态开始松动,新URL的收录速度明显加快——这不是玄学,是给搜索引擎发了个明确信号:“请现在就来验货”。