sql - 固定链接/slug 最佳实践

标签 sql internationalization slug permalinks

我要在网站上设置永久链接,我想知道在从现有新闻文章表生成永久链接时我应该遵循什么样的约定。

到目前为止,这是我提出的规则/步骤:

  1. 创建我的实时数据库的转储文件,在本地设置
  2. 使用 ALTER table ADD column slug VARCHAR(100) 向我的 news_articles 表添加一个新的“永久链接”列(不确定数据类型或长度,建议?)
  3. 更新我的 news_articles 表中的每一行,这样

在标题经过某种格式化之后,默认情况下永久链接列被标题替换:

Disclaimer: the titles are Russian Cyrillic and not English so I don't think I can get away with an easy regex replacement, unless perhaps I rely on unicode code ranges except I'm not familiar with the range of the Cyrillic characters so I'll do manual replacement and the rules I've defined so far are:

  • 用下划线替换所有空格
  • 去除前导/尾随逗号和句号
  • 删除所有单引号/双引号
  • 删除所有问号
  • & 成为俄语中“和”的意思

在我实际执行之前,如果有人对我当前的策略提出任何建议,我将不胜感激,因为有成千上万篇文章。

最佳答案

一些意见/建议

  • 用下划线替换所有空格 (用 hypen 代替下划线怎么样,就像 SO 中的标签一样)
  • 去除前导/尾随逗号和句号 (前导/尾随空格)
  • 删除所有单引号/双引号 (开头和结尾的引号,如果没有用连字符替换)
  • 删除所有问号 (与上面相同,所有其他标点符号如“”(左/右双引号)和符号如 % 和 = 等)
  • & 成为“和”的俄语单词 (您的意思是 и?必须无需 url 编码即可阅读)

更新:
* 将所有字符转换为小写 (有点主观,但这是一种常见做法,比全部大写更易读)

还有一个建议,这是我用来检查我的 url 路径或 slug 是否不包含任何 urlencoded 字符串的技巧。制定 slug 字符串后,我将执行 urlencode 并与预编码的进行比较。它们应该是相同的。

这篇文章的例子,如果 slug 恰好是“permalink-slug:best-practices”,urlencoded 将是“permalink-slug%3Abest-practices”,不是真正可读,并且违背了你会知道/同意的 slug 的目的。所以很容易知道原始字符串不起作用,因为它在 urlencoding 之后是不同的。

关于sql - 固定链接/slug 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1734298/

相关文章:

sql - OData 是否旨在用于政府和金融环境?我需要什么安全预防措施?

mysql - 将默认列值从日期时间转换为 varchar

sql - 在不使用 ORDER BY 子句的情况下以相同的顺序获取记录

python - 在 url 中组合多个 slug

Django Url,详细页面的 Slug

sql - 根据 ID 所在的行数从 SQL 查询中排除行

android - string.xml 国际化问题

php + mysql + html + javascript = i18n 头疼

perl - 国家字表

php - 如何将这个php slugify函数重写到mysql?