URL 不只是页面地址,它也是蜘蛛发现页面、判断页面归属和规范版本的一条线索。结构本身不会直接决定收录与否,但它会影响发现速度、抓取时的判断,以及后期改动的成本。下面几件事是实操里最常被问到的。
目录层级:深不是原罪,不可达才是
常听到“三层以上蜘蛛就不抓了”,这个说法并不准确。蜘蛛能否抓到某个 URL,主要看它能不能通过链接到达,以及这个地址是否值得抓。一个四层路径的页面,从首页三次点击就能到,一样会被正常抓取;反过来,一层路径但没有任何内链指向,就是孤儿页面。
真正麻烦的是这几种情况:
- 列表页只显示前几页,深处的条目只能靠站内搜索进入;
- 目录层级深,而且每一层都是纯筛选页,把链接信号稀释掉了;
- 面包屑和导航由 JS 生成,蜘蛛拿到的原始 HTML 里没有链接。
所以判断标准不是“几层”,而是“从入口到它需要几次跳转、有多少条路径”。重要内容尽量控制在三次点击以内,同时确保有不止一处内链指向它。
路径命名:语义化有用,但别为了改名反复折腾
语义化路径(/shoes/running-shoes)比纯数字(/p/1002381)多提供了一点信息,对蜘蛛判断主题、对用户阅读地址都有帮助。但这个收益是小幅的,不值得为了它把所有旧 URL 推倒重来。
更实际的做法是:新站直接用语义化路径;已有站点保持稳定,除非结构本身有硬伤,比如分类混乱、大量重复路径。因为每次改 URL 都意味着 301、外链价值衰减、索引重新计算,改得越频繁,收口成本越高。
命名上不必追求完美:英文、拼音、数字混用都可以接受,关键是同一类页面用同一套规则,别今天用 /article/xxx,明天换成 /a/xxx。
参数与“伪静态”:稳定比好看重要
带参数的 URL 并不意味着不能收录。搜索引擎能处理 ?id=123 这类地址,问题出在参数的组合爆炸:排序、筛选、分页、追踪参数叠加,同一个页面能生成几十个地址。这时需要的不是把参数改写成静态路径,而是控制参数的产生。
- 排序和筛选参数用 robots.txt 或 noindex 收口,只保留默认视图;
- 追踪参数(utm 等)不要写进站内链接;
- 分页可以保留,但翻到很深的页码可以考虑不再输出链接。
把参数强行重写成静态路径,表面看干净了,但如果底层逻辑没变,蜘蛛依然能通过其他入口发现那些组合版本,反而更难排查。
长度、大小写和结尾斜杠
URL 过长,比如几百个字符,不会直接被拒绝,但容易被截断、复制时出错。中文路径会被编码成一长串 %XX,可读性差,也不方便人工核对。条件允许时用短一点的英文或拼音。
大小写和结尾斜杠属于规范问题:/Page 和 /page 可能被服务器当成两个地址,/list 和 /list/ 也是。选定一种写法后,用 301 统一,别让两个版本同时返回 200。
上线前可以自查的几项
- 新页面发布时,是否至少有一处站内链接指向它;
- 导航、面包屑、列表页的链接是否出现在原始 HTML 中,关掉 JS 后仍能看到;
- 同一内容是否存在多个 URL 版本,canonical 是否指向正确;
- URL 结构近期是否改过,旧地址是否都做了 301;
- 站点地图里的地址是否都是规范版本。
URL 结构没有唯一正确答案。判断标准是三条:蜘蛛能不能顺利找到、能不能判断哪个是规范版本、以后改动时成本高不高。
把这三件事解决掉,剩下的细节不用过度纠结。改结构之前先想清楚收口方案,比事后一处处补救省事得多。