创建SEO友好URI字符串的最佳方法

该方法应仅允许URI字符串中的“ 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ- ”字符。

制作好的SEO URI字符串的最佳方法是什么?

这就是普遍的共识:

  1. 小写字符串。

     string = string.toLowerCase(); 
  2. 标准化所有字符并去除所有变音标记 (例如,é,ö,à变为e,o,a)。

     string = Normalizer.normalize(string, Form.NFD).replaceAll("\\p{InCombiningDiacriticalMarks}+", ""); 
  3. 将所有剩余的非字母数字字符替换为-并在必要时折叠。

     string = string.replaceAll("[^\\p{Alnum}]+", "-"); 

总结如下:

 public static String toPrettyURL(String string) { return Normalizer.normalize(string.toLowerCase(), Form.NFD) .replaceAll("\\p{InCombiningDiacriticalMarks}+", "") .replaceAll("[^\\p{Alnum}]+", "-"); } 

以下正则表达式将与您的算法完全相同。 我不知道做这类事情的图书馆。

字符串s =输入
 .replaceAll(“? - ?”,“ - ”)//删除连字符周围的空格
 .replaceAll(“[']”,“ - ”)//将空格和引号转换为连字符
 .replaceAll( “[^ 0-9A-ZA-Z-]”, “”);  //删除不在我们允许的字符集中的所有内容

如果您想搜索更多信息,这些通常称为“slu”。

您可能想查看其他答案,例如如何从字符串创建SEO友好的划线分隔的URL? 以及如何使Django slugify与Unicode字符串正常工作?

它们比javascript更多地涵盖C#和Python,但是对于slug约定以及制作它们时可能遇到的问题(例如唯一性,unicode规范化问题等)有一些与语言无关的讨论。