简体中文

文本和日常工具·文本工具包

URL slug 约定:连字符、小写字母以及 RFC 3986 允许的内容

· 背景

url-slugs 内容管理 文本工具

页面标题被简化为用连字符连接的短小写 URL 路径
原始 ToolAcre 矢量图

解释 slug 的来源、RFC 3986 保留哪些字符、为什么连字符胜过下划线、为什么小写字母很重要,以及这些规则如何塑造 slug 生成器生成的内容。

没有人可以大声朗读的 URL — 空格为 %20、破坏链接的大写字母以及为什么存在 slugs

直接复制到 URL 中时,诸如 `New Product Launch 2026` 之类的页面路径会很尴尬。空格需要另一种表示方式,混合大写字母会导致打字不一致,标点符号会使地址更难以扫描。 slug 为页面提供了人们可以在站点名称旁边识别的紧凑路径段。

存储库没有记录 slugs 的起源时间或证明其采用的普遍原因,因此这里有用的问题是可操作的。网站所有者需要进行一次从可编辑标题到可发布路径的可重复转换。 ToolAcre 提供了这种转换,而不假装结果保留了每个印刷细节。

没有人可以大声朗读的 URL,而无需将未记录的起源故事分配给蛞蝓

ToolAcre 不实现通用 RFC 3986 解析器或验证器。它的 `slugify` 函数规范化输入,删除组合标记,小写结果,用选定的分隔符替换字母和数字以外的字符,并修剪两端的分隔符。这些由源支持的规则比广泛的标准标签更精确地定义了该生成器。

在制定内容管理策略时,这种区别很重要。某个字符可能在 URL 中的某个位置可用,但仍会被该特定的 slug 转换删除。将生成的路径视为编辑约定,而不是视为其他系统接受的每个合法 URL 字符、保留分隔符或百分比编码表示的完整清单。

这个 slug 实现接受什么,而不是完整的 RFC 3986 解释

连字符是 `slugify` 中的默认分隔符,连续的标点符号或空格会折叠到同一分隔符中。因此,标题 `Quarterly report: costs & margins` 变为 `quarterly-report-costs-margins`,而不是暴露路径中的冒号、与号或空格。输出仍然明显地分为单词。

来源并未证明连字符通过特定的搜索引擎决策击败了下划线,因此历史不应在此作为事实呈现。合理的指导更简单:为网站选择一种分隔符,一致地应用它,并避免手动混合仅因为不同的编辑遵循不同的习惯而有所不同的表单。

连字符作为此生成器的分隔符,不声明不受支持的搜索引擎历史记录

在返回 slug 之前应用小写。这使得 `About Our Team`、`ABOUT OUR TEAM` 和 `about our team` 在此变换下收敛于 `about-our-team`。可预测的小写路径更容易从标题中复制,并避免创建唯一可见区别是大写的编辑变体。

两个大小写不同的路径是否解析为同一资源取决于周围的主机、路由器、部署和重定向规则;此文本实用程序无法确定该行为。实际的 CMS 规则是发布一个小写规范路径,并使任何重定向策略在其他地方明确显示,而不是依赖于有关案例处理的未经验证的假设。

长度、停用词和稳定性 - 关于在 slug 中保留什么和删除什么的实用指南

越短并不一定越好。保留可以让编辑将页面与附近内容区分开来的词语,尤其是产品、任务或主题名称。仅当剩余路径仍然具体时才删除措辞。当多篇文章随后争夺相同的候选路径时,简短但不明确的 slug 会产生维护工作。

ToolAcre 在其底层函数中支持 `maxLength` 选项,但大小写转换器配置描述的是整个文本 slug 操作,而不是可见的长度控制。更重要的是,截断不是一种编辑策略。在发布之前决定哪些词很重要,然后在发布后标题措辞发生变化时保持所选的标题稳定。

工作示例 - 将三个真实的标题变成标题并根据规则检查每个标题

考虑三个标题。 `Cafes, Costs & Margins` 变为 `cafes-costs-margins`; `Launch Notes: Version 2` 变为 `launch-notes-version-2`;并且 `A Guide to Better Page Names` 变为 `a-guide-to-better-page-names`。每个结果都是小写的,在保留的单词之间使用连字符,并删除非字母或数字的标点符号。

第一个示例故意是纯 ASCII,但相同的源规则可以将分解的重音从拉丁字母折叠为其基本形式。在将每个结果分配给内容之前先对其进行审查:该功能不了解品牌拼写、首选缩写、重复路线或编辑团队认为不必要的单词。

这不包括什么 — 国际化域名以及在 URL 中保留非拉丁文字的选择

此实现不会普遍丢弃非拉丁字母。正则表达式保留跨脚本的字母和数字,而配置规定 slugs 将非拉丁脚本保持小写而不进行音译。因此,声称该工具始终将标题转换为 ASCII 将与源代码和已发布的工具限制相矛盾。

此转换也不配置国际化域名、选择主机名或在书写系统之间音译单词。这些是单独的政策决定。对于多语言站点,测试实际 CMS 和路由堆栈中生成的路径,然后确定保留的脚本还是单独编写的翻译最适合该站点。

非拉丁字母被保留;音译和域名不在此转换范围内

有用的 slug 策略可以很简洁:从页面标题开始,小写,用连字符连接识别的单词运行,删除周围的分隔符,保留有意义的数字,并在发布之前检查结果是否清晰。在 CMS 规则中记录冲突和重定向行为,因为文本转换无法检查现有路由或保护入站链接。

文本大小写转换器通过一个动作应用机械部分。粘贴标题,选择 slug 转换,并在将输出复制到页面路径之前检查输出。它会折叠受支持的重音符号、删除符号、折叠分隔符并生成小写文本,从而将内容含义和长期 URL 稳定性留给编辑器。