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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了创建SEO友好URI字符串的最佳方法相关的知识,希望对你有一定的参考价值。

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

What is the best way to make nice SEO URI string?

答案

这就是普遍的共识:

  1. Lowercase字符串。 string = string.toLowerCase();
  2. Normalize所有字符并摆脱所有diacritical marks(例如é,ö,à变成e,o,a)。 string = Normalizer.normalize(string, Form.NFD).replaceAll("\p{InCombiningDiacriticalMarks}+", "");
  3. Replace all-保留非字母数字字符,并在必要时崩溃。 string = string.replaceAll("[^\p{Alnum}]+", "-");

总结如下:

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

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

String s = input
.replaceAll(" ?- ?","-") // remove spaces around hyphens
.replaceAll("[ ']","-") // turn spaces and quotes into hyphens
.replaceAll("[^0-9a-zA-Z-]",""); // remove everything not in our allowed char set
另一答案

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

您可以查看其他答案,例如How can I create a SEO friendly dash-delimited url from a string?How to make Django slugify work properly with Unicode strings?

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

以上是关于创建SEO友好URI字符串的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章

更新片段参数的最佳实践?

如何从字符串创建 SEO 友好的破折号分隔 url?

SEO友好的React-Redux应用程序

301 通过 .htaccess 将查询字符串重定向到 SEO 友好的 URL

使用 Codeigniter 重定向 SEO 友好的 url?

如何通过 pushState 在 Backbone 中使用 SEO 友好的 URL?