URL 是页面的门牌号。用户复制分享要用它,搜索引擎抓取和收录要用它,后台排查问题也要靠它对上号。可现实中,很多站点的地址是随手上线时生成的,栏目调整几轮之后就变成一堆拼不出含义的字符串。等到需要改版、迁移或者排查流量异常时,这些地址就成了最难处理的遗留问题。
这篇自查清单不谈跳转配置,只聊最前面的一步:地址本身怎么起名、目录怎么分、哪些信息不该写进 URL。
一、命名规则先统一
规则不需要复杂,但必须全站一致。
- 分隔符统一用短横线。英文短语之间用 - 连接,避免下划线、空格和加号。下划线在部分场景下不显示或被识别成其他字符,复制粘贴时也容易出错。
- 尽量全小写。服务器对大小写的处理并不一致,有的环境 /News 和 /news 是两个地址,会凭空多出一份重复内容。
- 不用中文和特殊符号。中文地址在复制、分享、日志分析时容易出现编码差异,出问题时排查成本高。
- 长度控制。能表达大意即可,不要把整个标题塞进去,也不要堆关键词。
二、目录层级与栏目对应
理想状态下,看地址就能猜到内容归在哪个栏目。常见做法是:栏目页 /tech/,子栏目 /tech/server/,文章 /tech/server/xxx.html 或直接挂在栏目下。
层级别太深
三到四层基本够用。层级过深会让地址变长,也给后期改版增加负担——每动一次目录,下面所有页面都要跟着处理。
也别全都平铺在根目录
所有文章都放在根目录,短时间看着简单,数量上去之后既不好管理,也没法通过目录看出内容分类。到那时再想补目录,改动量会大得多。
一个可以随时问自己的问题:如果只看到这条地址,能不能大致说出它讲什么、属于哪一类内容?
三、要不要把日期和 ID 写进地址
这是两种常见做法,各有代价,关键是选一种并坚持。
- 带日期,例如 /2024/05/xxx.html。适合新闻、公告这类时效性明显的内容,缺点是长期内容会显得过时,也让栏目结构被日期切碎。
- 带 ID,例如 /article/1024.html。稳定、不会因为改标题而变化,但对用户不友好,看地址不知道内容是什么。
- 混合,例如 /article/1024-seo-basics.html。ID 保证唯一,后面的词帮助阅读,是折中较多的选择。
需要提醒的是,标题改动时,如果地址里嵌了标题词,就会出现地址和内容不一致的情况。是否跟着改,要提前想清楚:改就要处理跳转和已有链接,不改就接受这个偏差。
四、参数与动态地址
筛选、排序、分页这些功能往往会产生带参数的地址。可以让功能正常使用,但要把主要入口指向形态干净的那一版,避免同一个列表被不同参数组合拆成很多地址。哪些参数应该保留、哪些应当被合并或屏蔽,最好在栏目上线时就定下来,而不是等日志里出现大量重复路径后再补救。
五、上线前的地址自查清单
- 全站分隔符是否统一,有没有混用下划线和短横线。
- 是否存在大小写不一致、可访问多个版本的页面。
- 目录层级是否超过四层,能否合并。
- 地址里是否含无意义参数、会话 ID、跟踪码。
- 结尾斜杠是否统一,带与不带是否都能访问到同一页面。
- 地址是否与栏目结构大致对应。
- 新页面命名是否和已有页面保持同一套风格。
六、变更要留记录
地址一旦对外发布,就尽量不要再动。确实需要调整时,先整理出旧地址清单,再准备对应的跳转映射,并在相当长一段时间内保留这些跳转——外部链接、用户收藏和缓存都不会因为你改版而同步更新。运维层面,最好有一条简单的变更记录:什么时候改的、改了哪些路径、映射关系放在哪里。下次排查时,这份记录比翻聊天记录有用得多。
URL 规范不是一次性任务,更像是一种习惯。每次新建栏目、上线页面时顺手遵守,比事后成批修正省力得多。