你的JS跳转是不是正在“谋杀”网站收录?

你发了一篇干货满满的原创文章,页面也做了基础SEO——结果百度搜不到它。点开百度搜索资源平台一看:收录量停在个位数。
这时候,该翻翻你页面里那段“跳转很快”的JS代码了。

百度蜘蛛到底怎么处理JS跳转?

百度确实能执行部分JavaScript,但它的执行能力远不如现代浏览器。
它不会等JS加载完、解析完、再慢慢渲染;更不会模拟用户点击、滚动或输入。
遇到window.location.href = 'xxx'这种直球跳转,蜘蛛大概率只看到跳转指令本身,连标题和正文都来不及读完,就跟着去了下一页。
我帮客户排查过几十个类似案例:首页能被收录,但点进去的二级页全“失踪”,原因就是每个导航链接都裹着一层JS跳转逻辑。

JS跳转对SEO有哪些致命伤害?

第一,内容没被看见。
你想让百度收录的是跳转前的页面(比如一篇行业分析),但蜘蛛根本没机会抓取它的<title><h1>和正文段落——它只记住了“这里有个跳转”,然后走了。

第二,内链权重断掉了。
搜索引擎靠链接传递信任。JS跳转不是标准超链接,蜘蛛不把它当有效入口。你精心设计的栏目页→文章页的导流路径,在它眼里等于不存在。

第三,爬虫时间被白花了。
百度每天给你的站点分配固定抓取配额。它辛辛苦苦来一趟,结果只抓到一个空壳跳转页,还得再跑一次目标页——相当于你请人来家里吃饭,却只让人在门口站了三秒。

第四,用户也可能卡住。
网速慢、旧版手机、广告屏蔽插件……都可能让JS失效。用户点一下,页面没反应,或者直接白屏。这种体验,百度虽不直接看到,但会通过统计工具里的高跳出率、低停留时长默默打分。

哪些JS跳转方式风险最高?

最危险的是“上来就跳”。
比如在<head>里写一行<script>location.href='https://xxx.com'</script>,或者用<meta http-equiv="refresh" content="0;url=...">。蜘蛛打开页面的瞬间,还没来得及扫描DOM,就已经被踢走了。

其次是“伪链接”。
<div class="btn">立即查看</div>这种非语义化标签,用JS绑上跳转事件。对用户来说点着没问题,但蜘蛛不会主动触发click事件,也就永远点不开那个“立即查看”。

最容易被忽略的是“延时跳转”。
比如设个3秒后跳转,你以为给了蜘蛛缓冲时间?其实它可能还在下载JS文件,或者刚解析完HTML结构,倒计时就结束了。
之前看过一个本地生活类网站,所有商户详情页都用setTimeout跳转,结果百度收录的全是列表页,具体店铺页几乎为零。

有没有被认可的替代方案?

有,而且很简单:回归<a href="目标地址">
这是20年没变过的标准,百度认,谷歌认,屏幕阅读器也认。权重怎么传、路径怎么走,清清楚楚。

如果真需要加埋点(比如统计点击来源),别动链接本身——
先写好<a href="/product/123" data-track="list-click">查看详情</a>
再用JS监听这个链接的click事件,发请求、打日志,最后return true让它自然跳转。
这样,JS挂了,链接照常工作;蜘蛛来了,照样顺着href爬下去。

技术是为内容服务的,不是给内容套枷锁。

如何检测网站是否存在问题跳转?

别猜,直接看百度怎么看你的页面。
打开【百度搜索资源平台】→ 进入「抓取诊断」→ 输入你怀疑有问题的URL(比如一个产品分类页)→ 点击“抓取”。
等返回结果出来,重点看两处:

  • 返回的HTML源码里,有没有location.hrefreplace(setTimeout(这类关键词;
  • 页面中关键入口(如“最新文章”、“热门推荐”)是不是用<a>写的,还是套在<span><button>里靠JS驱动。

另一个更快的方法:
在Chrome里按F12打开开发者工具 → 右上角三个点 → More tools → Sensors → 把JavaScript设为Disabled → 刷新页面。
如果此时页面核心内容消失了,或者所有“点击查看”按钮都点不动——那你的网站,已经重度依赖JS跳转了。

如果已经用了JS跳转,怎么补救?

别堆着不动,今天就能动手改。
第一步:优先改掉核心页面的跳转逻辑。
比如你博客的每篇文章、电商站的每个商品页、企业站的服务介绍页——这些页面的入口链接,立刻换成标准<a>标签。这是见效最快的一步。

第二步:处理已存在的“跳转页”。
如果这些页面曾经被百度收录过(比如/jump?id=123),现在你想让它指向真正的/article/123,那就去服务器配置301重定向。告诉百度:“这个地址永久搬家了,请把原来攒的权重一起带过去。”

第三步:在百度搜索资源平台同步更新。
进「网站支持」→「死链提交」,把已下线的跳转页列进去;
再进「链接提交」→「新增链接」,把刚改成标准链接的新页面URL批量提交。
不用等蜘蛛自己发现,你主动喊它来看。

今天就能执行的一个具体操作

打开你的网站后台或本地代码,找10个你最希望被百度搜到的内容页(比如最新发布的3篇文章、5个主力产品页、2个核心服务页)。
然后,按顺序做这三件事:

  1. 在Chrome里打开任意一个页面 → 按F12 → 切到「Network」选项卡 → 右键顶部栏 → 勾选「Disable cache」→ 再右键 → 勾选「Disable JavaScript」;
  2. 刷新页面,观察:标题还在吗?主图显示了吗?页面底部的“相关推荐”能点开吗?如果点不动、图片不加载、文字一片空白——记下来,这就是高风险页;
  3. 找到这个页面的模板文件(通常是.html.vue/.php),把所有类似<div onclick="goTo('xxx')"><span @click="jump">的写法,替换成<a href="/xxx">

改完一个,就用百度搜索资源平台的「抓取诊断」测一次。你会亲眼看到:蜘蛛这次真的抓到了标题、关键词和正文第一段。
今晚搞定这10个,明天你就能在「索引量」曲线里,看到第一个向上的小拐点。