入口页铺出去之后,URL 就是蜘蛛最先看到的东西。它不需要理解页面内容,光看地址就能大致判断一批页面是不是同一个模板批量生成的。所以 URL 结构不是美化问题,而是入口页能不能被顺畅爬到、会不会被当成低质批量的实际问题。
为什么 URL 结构值得单独拿出来说
蜘蛛的抓取是有顺序和预算的。它会先处理已经见过的域名和路径,再逐步扩展到新路径。如果一个域名下的 URL 毫无规律、层级混乱、参数一堆,蜘蛛在调度和去重时就会遇到更多麻烦,能分到每个页面上的抓取机会也会被摊薄。
换句话说,URL 结构影响的是爬取效率,而不是内容质量本身。结构清楚的站点,蜘蛛少走弯路;结构混乱的站点,蜘蛛可能爬了几百条就停下。
目录层级:浅一点,但不要全部平铺
常见的建议是层级越浅越好,但浅不等于把几千个页面全塞在根目录。根目录全平铺会带来两个问题:一是文件名大量相似,二是后续要分类调整时无处下手。
- 两到三层比较稳妥,例如 /a/xxx 或 /news/2024/xxx 这类结构。
- 同一层级下的页面主题尽量接近,方便蜘蛛理解路径含义。
- 避免出现 /1/、/2/ 这种纯数字且无规律的目录,人工和蜘蛛都难判断归属。
URL 长度和可读性
URL 太长、拼音缩写堆叠、带一长串随机字符,都会降低可读性。建议用短词或简短拼音,能看出大致主题即可。一个实用的判断方法:把 URL 复制给别人,对方能不能猜出这页大概讲什么。
参数与静态化:能不带的参数就别带
带参数的 URL 本身没有问题,但在入口页这种批量场景下,参数容易失控。同一个页面通过不同参数组合能生成几十个地址,蜘蛛会把它当成不同页面反复抓取,白白消耗抓取预算。
- 排序、筛选、来源追踪类参数尽量在入口页里去掉,或者用 robots 规则、canonical 做收敛。
- 会话 ID、随机串这类参数不要出现在对外链接里。
- 伪静态不是必须的。静态化主要图个干净统一,如果只是把参数改写成路径,底层仍然会跳转,实际意义有限。
大小写、结尾斜杠与多路径
这三种情况都会造成一个内容对应多个地址:/Page 和 /page、/abc 和 /abc/,以及同一页同时挂在两个目录下。入口页批量生成时特别容易出现,建议在程序和服务器层面统一规则,例如统一小写、统一不带结尾斜杠,再做 301 归一。
批量生成时最容易踩的坑
- URL 命名规律过于机械,比如全部是 /p/12345,一眼就能看出是批量产物。
- 为了凑数把不相关的内容挂到同一个目录下,路径含义和内容对不上。
- 同一批入口页重复指向同一个落地地址,URL 不同但内容完全相同。
- 上线后随意改路径,又没有做跳转,导致老 URL 直接变成 404。
改 URL 之后要处理的事情
- 能保留旧路径就保留,必须改的话用 301 指向新地址,不要直接删。
- 更新 sitemap,让蜘蛛尽快知道新的地址集合。
- 观察一段时间的访问日志,看老 URL 是否还在被请求,判断跳转有没有生效。
- 分批调整,不要一次把整个目录结构推翻重来。
URL 结构决定不了内容好不好,但它决定了蜘蛛要花多少力气才能把你的页面看明白。能少绕一个弯,就少绕一个弯。