Лучший способ создать оптимизированную для SEO строку URI - PullRequest
9 голосов
/ 03 января 2011

Метод должен разрешать только символы "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-" в строках URI.

Каков наилучший способ создать красивую строку SEO URI?

Ответы [ 3 ]

31 голосов
/ 03 января 2011

Это общее мнение:

  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}]+", "-");
}
3 голосов
/ 03 января 2011

Следующее регулярное выражение будет делать то же самое, что и ваш алгоритм.Я не знаю библиотек для подобных вещей.

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
1 голос
/ 03 января 2011

Обычно их называют "слизняками", если вы хотите найти дополнительную информацию.

Возможно, вы захотите проверить другие ответы, такие как Как я могу создать SEO-дружественный URL-адрес, разделенный тире, из строки? и Как заставить Django slugify правильно работать со строками Unicode?

Они охватывают C # и Python больше, чем javascript, но имеют некоторую независимую от языка дискуссию о соглашениях слагов и проблемах, с которыми вы можете столкнуться при их создании (таких как уникальность, проблемы нормализации unicode и т. Д.).

...