悦省yueser.com

← 全部指南

生成 URL 别名(slug):规则与常见坑

文章链接里那串小写英文加短横线就是 slug。把标题粘进来就能生成,但结果仍然需要自己确认一遍。

打开工具:生成 URL 别名

什么场景真的需要它

博客和文档站的每篇文章都需要一个地址,slug 就是地址里可读的那一段。分类页、标签页、图片或下载文件名也常用同样的规则,让链接看起来像人写的,而不是一串编号。

页内锚点和多语言站点的路径也用它。把标题转成 ASCII 短横线后,链接在任何环境下都不会因为空格或特殊符号被截断,粘贴到聊天软件里也不会断开。链接一旦发出,后面那段就别随意改,否则收藏和外链都会失效。

规则是什么,哪里会出意外

处理顺序是:先做 Unicode 兼容分解并去掉重音符号,再把字母、数字、下划线和汉字以外的字符全部换成连字符,然后去掉首尾连字符,最后转成小写。所以 Café 会变成 cafe,hello world 变成 hello-world。

中文会被保留,链接里会显示成一长串百分号编码,能打开但不好看也不再是纯 ASCII。日文假名不在保留范围内,会被替换成连字符,纯假名的标题可能生成空结果;韩文同理。下划线属于字母数字类,会原样留着。

生成之后要检查什么

先看结果是不是空的。标题全是标点、表情或纯假名时,可能只剩下几个连字符甚至什么都没有,需要手动补一个。再看长度,太长的 slug 在分享和展示时会被截断,通常越短越好。

唯一性要自己保证。两篇文章标题相同时 slug 也会相同,需要加日期或序号区分;已发布的链接不要随便改,否则外部引用和搜索引擎收录都会失效。需要日文罗马字时,先用音译工具转换,再生成 slug。

常见问题

中文标题会变成什么?

汉字会被保留,生成的中文 slug 在浏览器地址栏里显示为百分号编码。它能正常访问,但不是纯 ASCII,跨系统复制时可能出现编码问题,介意的话请改用英文或拼音。

为什么日文标题生成的结果是空的?

规则只保留字母、数字、下划线和汉字,平假名与片假名会被替换成连字符。纯假名的标题就只剩下连字符,去掉首尾后为空,需要手动补一个可读的别名。

生成的 slug 能直接用于线上吗?

可以,但先确认三件事:不为空、长度合适、和已有页面不重复。上线后尽量不要再改,旧链接会失效。含中文的 slug 建议先在目标站点测试一次。

相关工具:生成 URL 别名