先给出结论:不要追求“一个旧地址必须找到一个新页面”的完美对应。更稳妥的做法是把旧地址按内容类型分成三类——有明确新页的、内容合并后只剩近似页的、已经彻底失效的——分别用301、410或保留落地页处理。判断依据来自你手里的旧地址清单和访问日志,而不是直觉。
假设你手上有一份旧站导出的URL列表,比如/news/2019/0312.html、/product/a.html、/about/contact.php。不要急着逐条找新页,先按路径结构和页面标题做粗分类。可执行动作是:给每条旧地址打一个标签,取值只有“有直接对应”“可合并到栏目页”“无对应且无价值”。
这个动作的结果会直接影响下一步:如果“无对应且无价值”占比很高,你就不需要为它们逐个设计落地页,而是把精力放在前两类上。反过来,如果大量旧地址属于“可合并到栏目页”,映射规则可以用前缀匹配批量完成,而不是手工逐条指定。
当旧页的主题和新页高度一致,比如旧的产品详情页对应新的产品详情页,就用301永久重定向。注意这里说的“高度一致”是指核心内容相同,不是标题相似。你可以用旧页的H1和新页的H1做人工比对,而不是只看URL里的关键词。
很多旧站的文章页在新站被合并进一个列表页或专题页。这时把旧地址301到该栏目页,比全部丢到首页更合理。判断条件:旧页内容仍然能在栏目页里被用户找到入口。如果栏目页本身没有列出这些内容,指向它会让用户二次迷失,此时应改为保留一个说明页或做410。
把大量失效旧地址301到首页,是常见但容易掩盖问题的做法。410表示内容已永久删除,对用户和后续维护都更诚实。适用条件是:该旧页没有外链价值、没有历史流量、也没有合规留存要求。你可以先从访问日志里筛出过去一段时间仍有请求的旧地址,只对这部分做重点处理。
假设旧站有/old/price.html,新站没有价格页,但有一个“服务说明”页/service/。如果你直接301到服务说明页,用户会看到不相关的内容;如果你301到首页,用户会失去上下文。更合理的做法是:在服务说明页里补充一段旧价格体系的说明,然后把旧地址301到该页的对应锚点。这个动作的结果是,用户到达后能立刻看到与旧地址主题相关的内容,而不是被丢到无关页面。
映射表至少应包含四列:旧地址、处理方式(301/410/保留)、目标地址、判断依据。判断依据写清楚是“内容相同”“栏目合并”还是“已删除”,方便后续复查时不用重新推理。
如果你发现某个旧地址的请求量在改版后归零,不要直接断定是映射做对了。归零还有几种合理解释:该地址原本就没有外部入口、爬虫已经不再抓取、或者日志采集本身出现了断档。你可以做一次对照:同时检查同一批旧地址里,那些明确做了301的地址是否仍有请求记录。如果它们也归零,问题可能出在日志或抓取层面,而不是映射规则本身。
另一个可核对的证据是站内搜索词和404页面访问记录。如果用户仍在通过站内搜索寻找某个旧主题,说明该主题的映射可能指向了错误的新页。这时应回到映射表,检查该旧地址的目标地址是否真的覆盖了原主题,而不是只看状态码是否返回301。
需要避开的做法包括:把所有旧地址统一301到首页;把410当成301的替代品随意使用;以及在没有核对目标页内容的情况下,仅凭URL相似就建立映射。这些做法会让后续排查变得困难,也会让用户在到达后迅速离开。
最后回到你手里的那份旧地址清单:先分类,再决定哪些需要人工指定目标页,哪些可以用规则批量处理。映射设计的目标不是让每个旧地址都有去处,而是让仍然有意义的旧地址把用户带到最相关的新内容上。