
什么是 URL 别名?
别名(slug) 是网址中人类可读、URL 友好的部分,用于标识特定页面。“slug”一词源自报纸排版,指代故事在制作过程中的简短名称。
包含别名的示例 URL:https://example.com/blog/how-to-bake-sourdough-bread
其中的别名是:how-to-bake-sourdough-bread
别名出现在博客文章、产品页面、新闻文章、用户个人资料以及任何需要描述性和可分享 URL 的地方。

好的别名应具备哪些特征?
一个格式良好的别名:
- 仅使用小写字母、数字和连字符
- 没有空格(用连字符代替)
- 没有特殊字符(移除或音译)
- 没有连续或结尾的连字符
- 简洁但具有描述性(理想长度为 30-60 个字符)
- 包含主要关键词以利于 SEO
别名化算法
将任何文本转换为别名涉及以下步骤:
- Unicode 规范化:分解字符(例如 é → e + 组合重音)
- 音译:将非 ASCII 字符转换为最接近的 ASCII 等效字符
- 小写化:全部转换为小写
- 移除特殊字符:仅保留字母、数字和空格
- 将空格替换为连字符:连字符是标准单词分隔符
- 移除连续连字符:将多个连字符替换为单个
- 修剪连字符:移除开头和结尾的连字符
转换示例:
输入: "The World's Best Café & Restaurant!"
步骤1: "The World's Best Cafe & Restaurant!" (café → cafe)
步骤3: "the world's best cafe & restaurant!" (小写)
步骤4: "the worlds best cafe restaurant" (移除 ' & !)
步骤5: "the-worlds-best-cafe--restaurant" (空格变连字符)
步骤6: "the-worlds-best-cafe-restaurant" (移除双 --)
输出: "the-worlds-best-cafe-restaurant"
特定语言的注意事项
德语(元音变音)
德语元音变音有标准的音译方式:
- ä → ae
- ö → oe
- ü → ue
- ß → ss
"Schöne Grüße" → "schoene-gruesse"
法语和西班牙语重音
带重音的字符映射到其基本形式:
- é, è, ê, ë → e
- à, â, ä → a
- ñ → n
- ç → c
中日韩字符(CJK)
CJK 字符无法音译成有意义的拉丁字母别名。可选方案:
- 中文使用拼音罗马化
- 日文使用 romaji
- 使用页面标题的英文翻译
- 使用哈希或基于 ID 的别名

阿拉伯语、希伯来语、俄语
从右到左的脚本和西里尔字母通常需要特定于区域设置的音译规则。
别名的 SEO 最佳实践
使用关键词
别名是 Google 算法中的排名因素。自然地包含主要关键词:
- 好:
how-to-install-postgresql - 避免:
post-1234或page-2024-01-15
保持简短
较短的 URL 更易于分享和更整洁:
- 好:
/blog/sourdough-bread-recipe - 避免:
/blog/how-to-make-delicious-homemade-sourdough-bread-step-by-step-guide
使用连字符,而非下划线
Google 将连字符视为单词分隔符,将下划线视为单词连接符:
bread-recipe→ “bread” 和 “recipe” 是独立的关键词bread_recipe→ 被视为单个单词 “bread_recipe”
避免停用词
移除不增加 SEO 价值的常见单词:
the,a,an,and,or,but,in,on,at
"how-to-bake-a-delicious-bread" 可以变为 "how-to-bake-delicious-bread"

处理重复
从用户生成的内容创建别名时,实现唯一性:
my-post→ 已存在 →my-post-2→ 存在 →my-post-3- 或使用随机后缀:
my-post-a7b9
不同框架中的别名
Next.js(动态路由)
文件:pages/blog/[slug].js
export async function getStaticProps({ params }) {
const post = getPostBySlug(params.slug);
return { props: { post } };
}
Express.js
app.get('/posts/:slug', (req, res) => {
const post = db.posts.findBySlug(req.params.slug);
res.render('post', { post });
});
Django
from django.utils.text import slugify
slug = slugify("Hello World!") # "hello-world"
使用别名化工具
我们的工具:
- 输入任何文本 — 任何语言的标题、名称、短语
- 即时别名输出 — 实时查看转换后的别名
- 多种选项 — 配置分隔符、大小写、停用词移除
- Unicode 处理 — 正确处理重音和特殊字符的音译
- 复制别名 — 一键复制,立即使用
用于为博客文章、产品名称、分类页面以及任何需要人类可读且 SEO 友好的 URL 生成一致的别名。