你的导航链接在百度眼里是“空气”?别让SEO死得不明不白
你有没有试过:首页排名稳稳的,但点开导航里的“产品页”“分类页”,搜都搜不到?不是没写内容,不是没人点,就是——百度压根没收录。
我上周帮一个做工业滤材的客户查问题,他导航栏5个核心分类,日志里蜘蛛半年只爬了2个。原因?导航代码里藏着3个JS陷阱,他自己都不知道。
导航链接不可抓取,不是玄学,是实打实的“看不见的断头路”。今天不拆开看,你优化再多标题、再堆再多元描述,都是往漏桶里灌水。
为什么你的导航链接被蜘蛛“无视”了?
蜘蛛不会点、不会悬停、不会等加载。它只做一件事:顺着源代码里的<a>标签,一条条爬。
所以它看到的,永远是你禁用JavaScript后的样子。
最常见的三个卡点:
- JS下拉菜单依赖点击事件:比如鼠标点一下才展开二级菜单。蜘蛛不点,菜单就永远合着,里面链接等于不存在。
- CSS藏起来了:用了
display:none或visibility:hidden,或者靠transform: translateX(-999px)把导航挪出屏幕。蜘蛛不悬停、不滚动、不交互,这些链接就是透明的。 - 路径写错了:导航里写的是
products.html,而不是/products.html。在子目录页面打开时,蜘蛛会拼成/category/products.html,直接404,转身就走。
真实案例:深圳一家做激光切割配件的工厂网站,导航用Vue写了动态菜单。上线后,百度只收录了首页和“联系我们”页。查源代码发现:整个导航区域只有<div id="nav-root"></div>,所有链接全靠JS注入。换成纯HTML结构后,两周内12个核心产品分类页全部进索引。
检查导航可抓取性的3个“土办法”
别急着装插件、买工具。先用浏览器自带功能,3分钟验出真假。
方法一:关掉JavaScript再刷一遍
Chrome按F12 → 右上角三个点 → Settings → Preferences → 勾选 Disable JavaScript → 刷新页面。
如果导航没了、变灰了、点不动了——蜘蛛看到的就是这个画面。
方法二:右键 → “查看网页源代码”,不是“检查元素”
重点看<body>里有没有你导航对应的<a href="...">。
如果源代码里只有<nav id="main-nav"></nav>,里面空空如也,那说明链接是JS生成的,蜘蛛根本吃不到。
方法三:用Screaming Frog免费版跑一遍
(你平时做SEO肯定装过这工具)
输入首页URL → Start crawl → 爬完后点“Internal”标签页 → 在搜索框输入你的核心页面名,比如/filter/或/machines/。
如果搜不到,或者状态码全是404/redirect,基本能确定:导航链接没传过去。
修复导航不可抓取的4个硬核操作
修之前先确认:你用的是什么建站方式?WordPress?ThinkPHP?还是自己写的静态页?不同系统,改法不一样,但底层逻辑一致——让<a>标签老老实实躺在源代码里。
操作1:优先换掉JS主导航
不是让你放弃交互效果,而是把结构和行为分开:
- 导航骨架用
<ul><li><a>写死在HTML里; - 下拉动画用CSS
:hover或@media媒体查询控制; - 所有链接必须出现在源代码中,且href是完整路径(带
/开头)。
改完立刻右键看源代码,确认每个菜单项都在。
操作2:JS导航没法删?那就“双份备案”
在页面最底部(</body>前),加一段隐藏但蜘蛛可见的纯HTML导航:
<div style="position: absolute; left: -9999px;">
<a href="/products/">全部产品</a>
<a href="/custom/">定制服务</a>
<a href="/support/">技术支持</a>
</div>
别用display:none,用定位移出视口。蜘蛛能抓,用户看不到,也不影响设计。
操作3:翻一遍robots.txt和页面meta
打开你的域名/robots.txt,搜Disallow:,看有没有误伤导航路径,比如:
Disallow: /product/
Disallow: /category/
再打开首页源代码,搜<meta name="robots",确认没有noindex混在里面——有些CMS会在“关于我们”这类页面默认加,连带把导航链路上的页面也拖下水。
操作4:面包屑不是装饰,是备用通道
把面包屑导航放在正文上方(不是页脚),用标准HTML写:
<nav aria-label="Breadcrumb">
<a href="/">首页</a> >
<a href="/products/">产品中心</a> >
<a href="/products/filters/">过滤器</a>
</nav>
蜘蛛抓取优先级高,而且天然带层级关系。哪怕主导航崩了,它也能顺着这里摸进去。
真实案例:苏州一家B2B阀门供应商,主导航是React写的,面包屑却一直用静态HTML维护。我们把面包屑里的链接补全了所有一级分类,并确保每个<a>都带真实href。两周后,原本零收录的“球阀”“蝶阀”“截止阀”三个分类页全部出现在百度结果页。
导航链接的“权重分配”陷阱,90%的人没注意
能被抓到 ≠ 能分到权重。首页权重像一桶水,导航是出水口。口越多、越杂,每条支流就越细。
问题常出在这三点:
- 导航塞了15个链接,其中7个是“招聘”“防伪查询”“代理商入口”这种几乎没搜索量的页面;
- 把“联系我们”“隐私政策”和“工业滤芯”并列放在同一行;
- 所有链接title属性全写着“点击进入XX页面”,毫无区分度。
动手改:
- 导航只留真正要流量的页面,7个以内。其他链接挪到页脚,加
rel="nofollow"; - 把最重要的业务词放最左边:“滤芯”比“关于我们”更靠前;
title属性写人话,比如title="查看工业液体过滤器产品列表",而不是title="滤芯"。
真实案例:一个做实验室耗材的网站,导航里有“电商入口”“微信小店”“小程序”三个指向同一落地页的链接。我们合并为1个,把另外两个位置换成“离心管”“移液枪头”两个高需求品类。三个月后,这两个词的自然流量从几乎为0,变成占全站搜索流量的35%。
移动端导航的“隐形杀手”,你肯定遇到过
那个你引以为豪的汉堡菜单(☰),对用户友好,对蜘蛛来说就是一堵墙。
因为绝大多数实现方式是:
- 点击图标 → JS触发
classList.toggle('show')→ 菜单滑出; - 或者更糟:点击后才用fetch加载导航HTML片段。
蜘蛛既不点,也不fetch,它只读源代码——而源代码里,菜单区域可能就一行空<nav></nav>。
怎么破:
- 用CSS checkbox模拟点击:HTML里放一个
<input type="checkbox" id="menu-toggle">,用label[for="menu-toggle"]当按钮,菜单用#menu-toggle:checked ~ .menu-list控制显隐。蜘蛛能解析整个结构; - 或者直接用HTML5的
<details>+<summary>,原生支持折叠,语义清晰,百度已明确表示支持; - 底部固定加一个文字链接:“【网站地图】”,指向一个独立HTML页,里面按分类列出所有移动端需要的页面。
真实案例:杭州一家做智能灌溉控制器的公司,移动端导航完全依赖JS。我们把汉堡菜单改成<details>结构,同时在首页底部加了“网站地图”链接。一周后,原来在百度移动搜索里完全隐身的“滴灌控制器”“土壤传感器”等长尾词,开始陆续出现。
今天就能执行的1个操作:手动检查你的导航源代码
现在,就打开你的网站首页。
右键 → “查看网页源代码” → Ctrl+F 搜索 <a href=
数一数,有多少个链接对应你导航栏里的菜单项?
如果数量对不上,或者搜不到你最想推的页面URL(比如/cnc-parts/),说明问题就在这儿。
立刻做两件事:
- 打开你正在用的后台(WordPress后台 / 织梦后台 / 自建系统的模板编辑页),找到导航HTML部分,把JS调用替换成静态
<a>标签; - 改完后,登录百度资源平台(你肯定有账号),在“链接提交”里,把刚修好的几个核心导航链接手动粘进去提交一次。
这一步做完,你才算真正把路铺到了百度脚下。否则,所有后续动作,都是在教蜘蛛走空气。