Адекватная замена для / в URL - PullRequest
       15

Адекватная замена для / в URL

0 голосов
/ 10 сентября 2009

Быстрый один.

Я использую переписывание модов и большинство замен на месте:

  • пустое место = _
  • æ = ae
  • Æ = ae

и т. Д.

Каким будет естественный символ замены для /?

Спасибо

Ответы [ 3 ]

2 голосов
/ 10 сентября 2009

Подчеркивание рассматривается как символ слова, поэтому foo_bar - это одно слово, а не два слова. Но дефис не считается символом слова, поэтому foo-bar - это два слова.

Таким образом, вы должны использовать гипс -, где вы хотите разделить две части, и подчеркивание _, где вы хотите соединить две части. В случае /, который используется для разделения, я бы предпочел hypen -.

1 голос
/ 10 сентября 2009
  • Æ = ae

Вам не обязательно делать это. Вы можете поместить символы не-ASCII Unicode в URL, как байты в кодировке UTF-8. Итак:

http://en.wikipedia.org/wiki/%C3%86

отображается в браузерах как:

http://en.wikipedia.org/wiki/Æ

и любой из них может быть вставлен в адресную строку.

Пробел и косая черта могут быть закодированы как% 20 и% 2F. Тем не менее, эти формы все еще отображаются в браузере как проценты, потому что они являются зарезервированными символами. Так что они выглядят не так красиво. Существует дополнительная проблема с% 2F в том, что традиционные среды сценариев, основанные на CGI, не могут их читать, и Apache по умолчанию намеренно блокирует их, чтобы не допустить путаницы таких сценариев и создания дыр в безопасности.

Поэтому я делаю титульные слагы, полностью удаляя:

# % ' ( ) ? [ ] (U+00AD soft hyphen)

вместе с любыми управляющими символами (от U + 0000 до U + 001F, кроме U + 00A0 и от U + 007F до U + 00BF). Затем заменить любой прогон:

" $ & * + , / : ; < = > @ \ ^ (U+0020 space) (U+000A newline)

с одним подчеркиванием. Это устраняет необходимость появления последовательности% xx в URL. (Для символов Юникода все еще будут последовательности% xx, но пользователь их не увидит.)

Вы можете использовать дефис вместо подчеркивания, если хотите, в зависимости от того, что красивее. Поисковые системы должны быть в порядке с любым.

eta re comment другой ответ:

Потому что я использую php для поиска имени в моей базе данных. Таким образом, каждый символ должен быть преобразован обратно в исходный, иначе совпадение не будет найдено.

В этом случае вы не можете сделать что-то невосстановимое для персонажей. Вы не можете изменить ‘Æ’ на «ae», пробелы должны быть закодированы как «% 20», а косая черта - «% 2F». Это приведет к несколько уродливым URL-адресам, а «% 2F» вызовет проблемы с развертыванием в Apache и IIS.

Если вам нужно ввести только заголовок, вам нужно добавить столбец (UNIQUE indexed) в обработанный фрагмент, чтобы посмотреть, как предложено выше. Однако обратите внимание, что тогда вы не сможете переименовать / исправить заголовок страницы, так как это изменит слаг, нарушая URL.

Обычный подход к решению этой проблемы заключается в добавлении числового идентификатора в дополнение к слагу (см., Например, как это делает SO). Вы также можете 301-перенаправить, где имя слага не подходит для оптимального SEO.

0 голосов
/ 10 сентября 2009

Я бы использовал тире - так как Google разделяет такие слова в целях SEO или даже подчеркивание _, поскольку они оба являются префектами для удобства чтения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...