Slug 生成器/ URL 友好命名
将文章标题转为 URL 友好的 slug,自动处理重音字符、特殊符号,支持自定义分隔符和最大长度。
分隔符
最大长度
输入文本 / 标题
Slug
0 字符
Slug 结果显示在这里…
示例
这个工具有帮到你吗?
什么是 URL Slug
URL Slug 是网页地址中用于标识内容的可读部分,通常由小写字母、数字和连字符组成。例如 `example.com/posts/how-to-seo` 中的 `how-to-seo` 就是 slug。好的 slug 简短、可读、包含关键词,对 SEO 和用户体验都很重要。
如何生成好的 Slug
将标题转为小写、用连字符替代空格和特殊字符、去除停用词(的/了/is/the)、保留核心关键词。中文标题需要先转为拼音或英文。例如「如何学习 Python 编程」→ `how-to-learn-python`。URL 越短越好,但要保留可读性。
代码示例
JavaScript / Node.js
// npm install slugify
import slugify from 'slugify';
slugify('Hello World!', { lower: true })
// 'hello-world'
slugify('Cafe au Lait', { lower: true })
// 'cafe-au-lait'
// npm install limax (CJK support)
import limax from 'limax';
limax('你好世界') // 'ni-hao-shi-jie' (pinyin)
limax('東京') // 'dong-jing'
// Manual (no deps)
const slugify = (s) => s
.toLowerCase()
.normalize('NFD')
.replace(/[\u0300-\u036f]/g, '')
.replace(/[^a-z0-9]+/g, '-')
.replace(/^-|-$/g, '');Python
# pip install python-slugify
from slugify import slugify
slugify('Hello World!')
# 'hello-world'
slugify('Cafe au Lait')
# 'cafe-au-lait'
slugify('你好世界', allow_unicode=True)
# '你好世界'
# With max length
slugify('A very long title that should be truncated',
max_length=30, word_boundary=True)
# 'a-very-long-title-that-should'Go
// go get github.com/gosimple/slug
import "github.com/gosimple/slug"
slug.Make("Hello World!")
// "hello-world"
slug.Make("Cafe au Lait")
// "cafe-au-lait"
// Custom separator
slug.CustomMake("Hello World", "_")
// "hello_world"
// Truncate
s := slug.Make("A very long title here")
if len(s) > 50 {
s = s[:50]
}PHP / WordPress
<?php
// WordPress built-in
$slug = sanitize_title('Hello World! Cafe');
// 'hello-world-cafe'
// PHP custom
function to_slug(string $s): string {
$s = mb_strtolower($s, 'UTF-8');
$s = iconv('UTF-8', 'ASCII//TRANSLIT', $s);
$s = preg_replace('/[^a-z0-9]+/', '-', $s);
return trim($s, '-');
}
// Laravel
use Illuminate\Support\Str;
Str::slug('Hello World!'); // 'hello-world'
Str::slug('Hello World', '_'); // 'hello_world'常见问题
什么是 URL Slug?
Slug 是 URL 中用于标识特定页面的可读字符串部分,由小写字母、数字和连字符组成,如 /blog/my-first-post。好的 slug 简洁、可读、SEO 友好,避免特殊字符、空格、大写字母和中文(除非使用中文 URL)。
Slug 中为什么要用连字符而不是下划线?
Google 将连字符(-)视为单词分隔符,将 my-blog-post 识别为三个独立单词。下划线(_)被视为连接符,my_blog_post 被识别为一个词。因此使用连字符对 SEO 更友好。WordPress、GitHub、Shopify 等主流平台也默认使用连字符。
如何处理中文标题的 slug?
中文 slug 有两种主流方案:1)拼音转换:将汉字转为对应拼音,如「你好世界」→ ni-hao-shi-jie,适合 SEO 流量来自中文拼音搜索的场景;2)直接使用中文 URL:现代浏览器和搜索引擎完全支持,如 /博客/你好世界,但在分享链接时会被百分比编码显示。本工具支持两种模式。
Slug 的最佳长度是多少?
SEO 建议 slug 不超过 60-75 个字符(避免搜索结果中 URL 被截断)。包含目标关键词、去掉虚词(a、the、of、的、了 等),如「how-to-optimize-nextjs-performance」就是一个优质 slug。过长的 slug 会稀释关键词权重。
生成 slug 时应该移除哪些字符?
应该移除或替换:空格(→ 分隔符)、特殊符号(!@#$%^&*()+=[]{}|;:',.<>?/\`~)、重音字符(é→e、ü→u)、控制字符。可以保留:字母(a-z)、数字(0-9)、分隔符(-._)。中文字符根据业务需求决定是否保留。
Next.js 或 WordPress 中如何生成 slug?
Next.js 推荐使用 GitHub 的 slugify 或 limax 库(支持拼音)。WordPress 内置 sanitize_title() 函数自动生成 slug。在 Node.js 中也可以自己实现:str.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, '')。