先给结论:不要把所有大小写变体都重定向到首页,也不要让服务器自动做不区分大小写的匹配。正确做法是先把真实存在的资源按“当前正式路径”定一套规范写法,再为历史大小写变体建立一对一的映射,映射目标必须是仍然保留的那个具体页面或文件;已经确定退出的旧路径,让它继续返回 404,而不是被吸收到某个通用页面。下面按你手里的一份旧资料或一个旧页面,逐步走完这个决定。
路径大小写问题有一个容易误判的地方:请求返回 404,不一定是因为服务器区分大小写。你需要在服务器访问日志里找到那条 404 记录的完整请求路径,再和文件系统或路由表里的实际名称逐字符比对。只有出现“仅字母大小写不同、其余完全一致”的情况,才能归入这一类。
可以用一组可区分原因的证据来判断:
这一步的实际动作是:把日志里的 404 路径、实际资源路径、两者差异类型记成一张对照清单。清单决定了后面哪些条目进入映射、哪些直接放弃,所以不要跳过。
映射的前提是有唯一目标。对每一个仍然有价值的旧页面或旧文件,你要先决定它现在的正式路径是什么。这个正式路径应当是全站链接、站点地图和内部引用统一使用的那一个写法。
选择时有一个取舍:
假设你有一个旧资料页,历史上被写成 /Docs/Guide.html 和 /docs/guide.html 两种形式,实际文件只存在于其中一种。你选定实际存在的那个为规范路径,另一种通过服务器规则映射过去。这个假设只用于说明比较方法:先有唯一目标,映射才有意义。
统一映射最容易被做坏的地方,是用一条不区分大小写的通配规则把所有变体都指向首页。这样做的结果是:本来仍然有价值的那个具体页面失去了对应关系,访问者拿到的是无关内容,后续也无法判断哪些旧路径真的还有人访问。
更稳妥的做法是逐条建立一对一映射,规则里同时写明来源路径和目标路径。对于确实存在大量同类变体的目录,可以按目录级别建立映射,但目标仍应落到具体页面或具体资源,而不是站点根目录。
映射建立后,用一个实际动作验证:分别请求规范路径和它的历史大小写变体,确认前者直接返回 200,后者返回指向同一目标的跳转,而不是落到首页或另一个不相关页面。验证结果会告诉你映射是否写对;如果变体仍然 404,说明规则没有命中,需要回到第一步核对该路径是否真的存在。
你手里的旧内容、旧系统或旧合作关系,往往一部分要退出、一部分仍要保留。大小写映射只适用于前一类里“资源还在、只是写法不同”的部分。判断标准可以简化为两条:
需要提醒的是,robots.txt 的抓取限制不等于可靠的索引移除,站点地图也不保证收录。所以不要用“把它放进站点地图”或“在 robots.txt 里挡一下”来代替映射决策。映射解决的是访问路径对应关系,索引层面的变化是另一件事,不能混为一谈。
最后把前面的判断落成一份可以直接执行的清单,交给负责服务器配置或路由的人。清单里每一条至少包含:旧路径的完整写法、是否保留、规范路径、映射类型、验证方式。
交付后你要做的是回查验证结果,而不是假定配置一定生效。如果某个变体在验证时仍返回 404,先确认它是否真的属于大小写差异,再确认规则是否被更靠前的规则覆盖。只有验证通过的条目,才算完成了统一映射;验证不通过的条目,应退回清单重新判断是保留还是退出。这样一轮下来,你手里那份旧资料或旧页面就有了明确归属,而不是被一条通配规则草草收场。