URL 常被当成纯技术细节,可它其实是应用对外暴露的一种界面。用户会看到它、复制它、分享它、收藏它;搜索引擎会索引它;其他网站会链接它。一个设计糟糕的 URL 会让人困惑、容易失效、难以分享;而一个好的 URL 则可读、可预期,并且能长久不变。设计 URL,本质上是在做一份会被许多人依赖的长期承诺。

URL 是一种用户界面

哪怕用户从不刻意去读地址栏,URL 也在悄悄影响他们的感受。一个像 /blog/url-design-tips 的地址,一眼就能看出指向什么;而一个塞满随机参数和数字的地址则什么都说明不了。可读的 URL 让人更愿意点击、更容易记住、也更放心分享。

把 URL 当成界面来设计,意味着要考虑它在邮件里、聊天框里、搜索结果里被人看到时的样子,而不只是它在技术上能否工作。

可读性来自有意义的词

清晰的 URL 用真实、可读的词来描述资源,而不是内部 ID 或晦涩的代码。/products/wireless-headphones/p?id=84217 更友好,因为它本身就在表达内容。这种可读性不仅服务于人,也帮助搜索引擎理解页面主题。

选词时尽量用小写、用连字符分隔单词、避免空格和特殊字符。这些小约定累积起来,就是整站地址的整洁与一致。

稳定意味着不轻易改变

URL 一旦发布,就会被收藏、被链接、被索引。此后每一次更改,都可能让某个外部链接失效、让某个书签指向空页。因此最重要的原则之一就是:尽量让 URL 保持稳定,把它当成一种长期承诺,而不是可以随产品改版随意重排的东西。

这意味着在设计之初就要慎重,因为日后修改的代价很高。稳定的地址,是用户和其他站点能够信任你的基础。

当不得不改变时

有时重构在所难免,地址结构必须调整。这时关键不是"绝不改变",而是"改变时不抛弃旧地址"。通过永久重定向,把老 URL 平滑地导向新位置,既保住了外部链接,也保住了搜索引擎积累的权重。

把重定向当成迁移的标配,而不是事后补救。一次考虑周全的迁移,能让结构焕新的同时,不让任何老链接落空。

别在 URL 里暴露实现细节

地址里出现 .php.aspx 这类后缀,或是内部框架的痕迹,会把实现细节泄露给外界,也让 URL 和技术栈绑死。日后换技术、改架构时,这些地址就成了包袱。干净的 URL 描述的是资源本身,而不是它是用什么造出来的。

把地址与底层实现解耦,既让 URL 更耐久,也给未来的技术演进留足空间。资源是什么,比它如何实现更值得放进地址里。

让结构反映资源的层级

有层级感的路径能帮助用户理解他们身处何处,比如 /docs/guides/getting-started 清楚地表达了从文档到指南再到具体页面的归属关系。这种结构不仅美观,还让用户可以通过截断路径来"向上导航",符合直觉。

不过层级要服务于含义,而非为了深而深。过深或人为堆砌的路径反而增加负担。让结构自然地映射资源之间的真实关系,是最稳妥的做法。

把好 URL 当成长期资产

归根结底,设计 URL 是在权衡当下的便利和长远的责任。可读、稳定、不泄露实现、结构清晰——这些特质让你的地址既好用又耐久。它们让链接可以被放心分享,让搜索引擎乐于索引,也让用户在多年之后回访时,那个老链接依然有效。

花一点心思在 URL 设计上,回报是长久的。一套好的地址体系,会安静地为你的产品服务很多年,而你几乎不必再去碰它。