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

时间:2011-01-02 23:10:22

标签: java string char uri slug

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

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

3 个答案:

答案 0 :(得分:31)

这是普遍的共识:

  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}]+", "-");
    
  4. 所以,总结一下:

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

答案 1 :(得分:3)

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

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

答案 2 :(得分:1)

如果您想搜索更多信息,这些通常称为“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规范化问题等)有一些与语言无关的讨论。