把“有效地址集合”定义成一份可枚举、可校验的规则清单,而不是一份不断追加的URL白名单。参数组合无限增长时,任何靠人工列举的清单都会失效;可行做法是先确定哪些参数参与路由,再规定其余参数的处置方式,最后用抽样请求验证规则是否真的生效。
同一个404页面问题,在不同站点上会走向相反的做法,分界线是参数有没有改变服务端返回的内容。
判断依据不是参数名看起来像不像筛选,而是移除参数后响应体是否发生实质变化。可以用同一路径分别请求带参数和不带参数两个地址,比较标题、主体文本和结构化数据中的实体标识;如果三者一致,归入第一类。
开发、SEO和产品对“这个地址该不该是404”经常各执一词,原因是三方在回答不同问题:开发看路由是否匹配,SEO看是否存在可索引内容,产品看用户是否期待看到某个结果。把分歧变成可核对的项目,需要三方共同确认一张表,每行至少包含:路径模式、参数是否参与内容生成、无匹配时的期望状态码、是否允许出现在站点地图中。
这张表的价值在于把争论从“我觉得”变成“规则第几行怎么写的”。当有人主张某个参数组合应当保留时,他需要指出该行属于哪一类条件,而不是凭单次访问的印象下结论。
假设一个电商站点,商品列表路径为 /list,支持 page、sort、brand 三类参数。可以按以下顺序推进:
brand,因为不同品牌对应不同商品集合;page 和 sort 只改变同一集合的呈现顺序。brand 建立取值白名单,取值来自后台已上架品牌,其余取值返回404。page 和 sort 规定:超出有效页码范围返回404,合法页码与排序组合指向不含这两个参数的规范地址。这一步的结果直接决定下一步:如果抽样发现白名单外的品牌值仍返回200并渲染出空列表,说明服务端没有做取值校验,此时继续扩充白名单没有意义,应先补校验逻辑;如果校验已生效,才轮到处理规范地址与站点地图的对应关系。
请求量或抓取量下降、某个参数组合在日志中消失,都不足以证明地址集合定义正确。合理解释至少包括:抓取预算被其他路径占用、上游链接被移除、请求被中间层缓存拦截、统计口径调整。要区分这些原因,需要同时核对状态码分布、规范标签指向和站内链接的实际href,而不是只看单一指标。
另外,用 robots.txt 限制某类参数抓取,只是阻止抓取,不等于把地址从索引中移除;站点地图中列出地址也不保证会被收录。若确实需要让某类地址退出索引,应结合状态码和规范声明处理,并分别核查不同搜索引擎对相应指令的支持情况,不能假设一套写法在所有引擎上等效。
规则一旦确定,应当落在路由中间件或反向代理配置中,而不是散落在文档和口头约定里。配置中至少体现三件事:参与内容生成的参数名、各参数的取值来源、无匹配时的状态码。这样当参数种类继续增加时,新参数只需判断属于哪一类,而不必重新讨论整个集合的边界。
如果某个新参数既不影响内容、又难以枚举取值,优先把它排除在有效地址集合之外,并确认排除后用户仍能通过站内导航到达目标内容;这一步做完,再决定是否需要为它保留单独的入口。