做站点运营的时候,参数是最容易被忽略的一类问题。它不像死链、404 那样一眼就能看见,但在抓取日志里出现的次数往往多得吓人。
参数页为什么会失控
筛选、排序、分页、站内搜索、来源跟踪,这些功能几乎全靠参数驱动。用户点几下就能拼出成千上万条地址,而每条地址在蜘蛛眼里都长得不一样,于是它会被当成新页面反复访问。
直接后果是:真正需要被收录的栏目页和详情页,抓取次数被挤到了后面。这就是常说的抓取预算被稀释。它不会立刻表现为收录下降,但一段时间后你会发现新页面的发现速度变慢了。
先给参数分个类
值得保留的
- 有明确搜索需求的筛选,比如按城市、按品类,且用户在站内确实会搜索这类词
- 结果相对稳定、不会随库存大幅波动的参数组合
- 能独立成页、本身有一定内容可读的组合
建议收敛的
- 排序方式:order、sort、by 这类,通常只需要保留一个默认顺序
- 会话与跟踪参数:utm_、from、ref、sessionid 等
- 纯技术参数:打印、导出、每页显示条数
- 无意义的多参数叠加,比如同时带上三个以上筛选条件
判断标准其实很简单:这个地址如果被用户单独分享出去,对方打开后能看到有用内容吗?如果答案是否定的,它大概率不需要被蜘蛛抓。
站内搜索页单独看
站内搜索页通常有两个麻烦。一是结果页本身没什么可读内容,二是搜索结果会组合出近乎无限的地址。常见做法是把搜索结果页设为 noindex,同时在 robots.txt 里屏蔽搜索路径。
但要清楚一点:屏蔽收录不等于蜘蛛不会访问,抓取次数照样会发生。所以屏蔽只是一层,更关键的是别在页面里到处暴露搜索链接。
如果站内搜索本身有流量价值,可以挑出少数高频关键词,给它们做固定页面,其余的交由规则限制。
自查清单
- 从抓取日志或服务器日志里筛出带问号的地址,按参数名统计出现次数
- 把出现最多的前十类参数列出来,逐个判断是否需要被蜘蛛抓取
- 检查 robots.txt 是否已经屏蔽了跟踪参数和搜索路径
- 检查列表页里的筛选链接,是否都指向同一套规范地址
- 确认筛选页有 canonical 或等价处理,避免同一批内容存在多套地址
- 改完后观察一到两周,看参数地址在抓取总量中的占比是否下降
服务器与缓存也要一起看
有些 CDN 默认忽略查询参数做缓存,这会让不同筛选条件返回同一个缓存结果。用户看到的内容对不上,蜘蛛抓到的也可能是旧版本。上线前确认一下缓存策略是否把关键参数计入了缓存键,避免出现地址不同、内容却一样的混乱局面。
别走极端
把所有参数一刀切屏蔽,可能会顺手挡掉真正需要的入口。有些筛选组合本身就是用户常搜的词,直接屏蔽等于把流量让出去。稳妥的做法是先看搜索需求和日志数据,再决定留哪些。
参数治理不是越少越好,而是让蜘蛛把有限的次数花在能带来价值的地址上。
落地节奏
一次只动一类参数,改完观察一段时间再动下一类。改动前后各留一份日志做对照,出问题时能快速回退。如果是多人协作的站点,把参数规范写进上线的检查项里,比事后补救省事得多。