统一映射的核心不是把所有链接改成小写,而是先确定“哪一层负责把请求落到同一资源”:服务器文件系统、应用路由还是链接生成逻辑。假设旧系统把栏目页输出为 /News/2024/Guide.html,新系统实际文件是 /news/2024/guide.html;在大小写敏感的服务器上,旧内链会落到 404,而首页、导航和正文里的链接又混用两种写法。此时应选一个规范形式,并在请求进入应用或服务器时做一次统一映射,而不是逐条替换历史链接。
如果同一路径仅大小写不同却返回不同状态,先看服务器是否区分大小写。Linux 常见文件系统区分大小写,Windows 和部分容器挂载配置不区分;这意味着同一批旧链接在开发机正常、上线后 404,并不一定是链接写错。
区分证据可以这样取:
/News/2024/Guide.html 和 /news/2024/guide.html 分别请求一次,记录状态码和最终响应地址。若两者返回同一页面,问题可能只在链接生成层;若一个 404、一个 200,则映射必须放在请求入口或文件系统别名层。
常见做法有三种,适用条件不同:
若旧系统或旧合作关系需要退出,但部分内容仍有价值,优先保留规范路径并让旧变体 301 到它;不要为每个大小写变体保留独立页面,否则内链会把权重和抓取预算分散到重复地址上。
假设某站要从旧 CMS 迁移到新框架,旧 CMS 生成的内链大量使用首字母大写路径,新框架按小写 slug 匹配。迁移后,栏目页仍可访问,但文章页出现 404。此时按以下顺序处理:
这个顺序的关键是:先让请求落到同一资源,再让新输出的链接不再制造新变体。只做前者,旧变体会持续出现;只做后者,已有旧链接仍会 404。
验证时不要只看首页或栏目页。应覆盖导航、正文内链、站点地图、分页和旧合作方留下的固定链接。检查项包括:
注意,robots.txt 的抓取限制不等于可靠的索引移除;即使屏蔽了某个变体,它仍可能因外部链接而出现在结果中。站点地图也不保证收录。映射完成后,应结合日志和抓取工具确认规范地址可访问、变体可跳转,而不是把“提交站点地图”当作修复完成。
当旧内容、旧系统或旧合作关系需要退出,保留判断应围绕“是否仍有访问需求和内链价值”。可保留的部分包括:仍被其他页面链接的栏目页、有外部链接的文章、作为导航层级存在的分类页。可放弃的部分包括:无内链指向的重复变体、仅大小写不同的空壳地址、已无访问的旧参数页。
具体动作是:先导出旧路径清单,标记哪些有内链或外链,再为保留项建立到新规范地址的映射;放弃项统一返回 410 或 301 到最近的相关页面。做完后复查内链图,确认没有页面继续指向已放弃的变体。若映射后仍有大量旧变体被请求,说明外部引用或缓存尚未清理,下一步应优先处理这些来源,而不是继续扩大重写规则。