3

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

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

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

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

免责声明:标题是俄语西里尔字母而不是英语,所以我认为我无法轻松替换正则表达式,除非我可能依赖 unicode 代码范围,除非我不熟悉西里尔字母的范围,所以我将进行手动替换,到目前为止我定义的规则是:

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

在我实际执行之前,我会感谢任何关于我当前策略的建议,因为有成千上万的文章。

4

2 回答 2

3

一些意见/建议

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

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

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

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

于 2009-11-14T14:40:17.357 回答
3

我认为问题是许多程序不允许使用 unicode url... Wikipedia 在文本中使用这些字符.. 在浏览器中它们看起来不错,但是在发送链接时它们变得很长...

http://th.wikipedia.org/wiki/%E0%B8%AA%E0%B9%89%E0%B8%A7%E0%B8%A1%E0%B9%83%E0%B8%99%E0 %B8%9B%E0%B8%A3%E0%B8%B0%E0%B9%80%E0%B8%97%E0%B8%A8%E0%B9%84%E0%B8%97%E0%B8 %A2

我认为唯一好的解决方案是只转换为 AZ 字母.. 其他语言只使用 ID..

如果有人对此有很好的解决方案,我很想听听:)

于 2009-11-15T01:58:11.277 回答