很多站点的 URL 混乱不是一次改版造成的,而是長期累积的结果。早期編輯用 ID 命名,後来換了 CMS 插件自動生成拼音,再後来有人坚持用英文單词,几年下来,同一個栏目下面就會出現好几種路径風格。對用戶来说也许還能忍,但對抓取和後續维護来说,每多一種風格,就多一份要记住、要處理的東西。
一、命名混乱通常是怎么来的
常见的情况有几類:一是人員更替,不同編輯的命名习惯没有统一;二是工具更替,不同时期的發布系統預設規則不同;三是栏目扩張,新開的频道没人參考老频道的寫法;四是临时需求,比如做活動頁时随手起了一個带參數的長地址,後来忘了清理。
這些地址單獨看都没問题,放在一起就麻烦了:同一類内容出現 /news/123.html、/news/2023/05/abc/、/article?id=456 三種形式,站内連結指向不一致,站点地图里也混着寫,後面想做批量處理时很难用一條規則覆盖。
二、值得统一的几條基本規則
- 统一小寫。部分服務器区分大小寫,/About 和 /about 會被当成两個地址,容易出現同一頁面两個版本。
- 词間用连字符。優先用 - 而不是下划线、空格、加号,避免轉义後地址變長、複製时出错。
- 控制長度。去掉“的”“和”“最新”“推荐”這類對识別没有帮助的词,保留核心语义即可。
- 层級別太深。一般控制在三到四层,再深的目錄對用戶和抓取都不友好,也不利于後期迁移。
- 單复數统一。不要同一個站里既出現 /product/ 又出現 /products/,選一種並寫進規范。
- 日期型地址慎用。需要長期更新、持續维護的内容,不要把發布日期寫進路径,否則每次更新都會面對一個看着過期的地址。
- 參數尽量少。篩選、排序、分頁參數不要随意暴露成可獨立抓取的地址,否則很容易生成大量近似頁面。
三、容易被忽略的几處细节
末尾斜杠
带斜杠和不带斜杠,在很多服務器上是两個地址。規范里要明确寫清楚,或者用重定向把其中一種统一到另一種,別让两種寫法同时在站内流通。
中文标题的轉寫
中文标题轉成拼音還是英文,取决于站点定位,但同一栏目内最好保持一致。混着用會让路径看起来没有規律,也不方便從 URL 判断内容主题。
參數與静態路径的邊界
列表頁的篩選參數、排序參數,通常不需要單獨作為可索引地址。要么在參數頁上處理抓取指令,要么把它們限制在列表頁内部,避免被外部連結带出去。
文件扩展名
同一站点里既有 .html 又有 .php,還有完全不带扩展名的路径,這本身不算错,但如果每個频道各用一套,後期做重定向和規則匹配时會多出很多分支。
四、自查可以按這個顺序做
- 先把站内 URL 清單拉出来,来源可以是站点地图、服務器日誌和一次站内連結爬取,三者對照更完整。
- 按一級目錄分组,观察每個目錄内部的命名風格是否集中,重点看有没有明顯不合群的那几個。
- 找出真正需要處理的:同一内容多個地址、带參數的重复列表頁、明顯拼寫错誤或临时命名。
- 判断改動價值。已经有稳定流量和外部連結的地址尽量別動,優先處理低價值、新上线、几乎没人引用的頁面。
- 确實要改的,做好 301 指向,並同步更新站内連結、canonical 和站点地图,改完再抽查一遍是否還有舊地址残留。
不要為了整齐而批量改 URL。命名規范的價值在于减少未来的麻烦,而不是制造一次性的迁移風險。
五、把規則落到日常里
規范寫下来才有意义。可以把命名要求整理成一份简短文档,放在团队常用的位置;在 CMS 里配置好別名生成規則,减少手動輸入;發布前用一次简單检查確認路径是否符合要求。新内容按規范走,老内容按價值分批處理,站点 URL 的面貌會慢慢收敛。
這件事短期看不到明顯收益,但它能减少後面重复 URL、重定向鏈、内鏈失效這一類反复冒出来的問题。命名規范属于基础设施,平时不起眼,出問题时最費時間。