Должен ли я использовать акцентированные символы в URL?
Когда кто-то создает веб-контент на языках, отличных от английского, возникает проблема оптимизации поисковых систем и удобных для пользователя URL.
Мне интересно, является ли наилучшей практикой использование де-акцентированных букв в URL-адресах - риск, что некоторые слова имеют совершенно разные значения с определенными акцентами и без них, - или лучше придерживаться использования неанглийских символов, когда целесообразно пожертвовать удобочитаемостью этих URL-адресов в менее продвинутых средах (например, MSIE, источник просмотра).
"Экзотические" буквы могут появляться где угодно: в заголовках документов, в тегах, в именах пользователей и т. Д., Поэтому они не всегда находятся под полным надзором со стороны организатора сайта.
Конечно, возможный подход мог бы заключаться в создании альтернативных - безакцентированных - URL-адресов, которые указывали бы на исходное назначение, но я хотел бы узнать ваше мнение об использовании акцентированных URL-адресов в качестве основных идентификаторов документов.
5 ответов
Столкнувшись с подобной проблемой, я воспользовался переписыванием URL-адреса, чтобы такие страницы были доступны как с ударением, так и без акцента. Фактический URL будет что-то вроде
http://www.mysite.com/myresume.html
И функция перезаписи + перевода символов позволяет эту ссылку
http://www.mysite.com/myresumé.html
загрузить тот же ресурс. Поэтому, чтобы ответить на ваш вопрос, в качестве основного идентификатора ресурса я ограничусь 0-9, AZ, az и случайным дефисом.
Здесь нет никакой двусмысленности: RFC3986 говорит "нет", то есть URI не могут содержать символы Unicode, только ASCII.
Совсем другое дело, как браузеры представляют закодированные символы при отображении URI, например, некоторые браузеры будут отображать пробел в URL-адресе вместо "%20". Так работает и IDN: строки в формате punycoded кодируются и декодируются браузерами на лету, поэтому, если вы посещаете café.com, вы действительно посещаете xn--caf-dma.com. То, что похоже на символы Юникода в URL, на самом деле является лишь "визуальным сахаром" со стороны браузера: если вы используете браузер, который не поддерживает IDN или Unicode, кодированная версия не будет работать, потому что базовое определение URL просто не поддерживает его, поэтому для его последовательной работы необходимо кодировать%.
Учитывая, что URL с акцентами часто имеют тенденцию выглядеть так:
http://fr.wikipedia.org/wiki/%C3%89l%C3%A9phant
... что не очень хорошо... Я думаю, что мы все еще будем использовать де-акцентированные URL-адреса в течение некоторого времени.
Хотя, должно быть, все должно стать лучше, так как URL-адреса с акцентом теперь принимаются веб-браузерами.
Firefox 3.5, который я сейчас использую, показывает URL-адрес приятным способом, а не с%stuff, кстати; Похоже, что это "новый" со времен Firefox 3.0 (см. Firefox 3: поддержка UTF-8 в строке адреса); поэтому, вероятно, не поддерживается в IE 6, по крайней мере, - и все еще слишком много людей, использующих этот:-(
Возможно, URL без акцента выглядит не лучшим образом; но, тем не менее, люди привыкли к ним и, кажется, в целом понимают их достаточно хорошо.
Вы должны избегать использования символов, отличных от ASCII, в URL, которые пользователи могут вводить в браузере вручную. Это нормально для встроенных ссылок, предварительно закодированных сервером.
Мы обнаружили, что браузер может кодировать URL различными способами, и очень трудно понять, какую кодировку он использует. Смотрите мой вопрос по этому вопросу,
В полном URL есть несколько областей, и у каждой из них могут быть свои правила. Протокол прост ASCII. Запись DNS регулируется правилами IDN (международные доменные имена) и может содержать (большинство) символов Unicode. Путь (после первого /), имя пользователя и пароль снова могут быть любыми. Они экранированы (как%XX), но это всего лишь байты. Какова кодировка этих байтов, трудно понять (интерпретируется http-сервером). Часть параметров (после первой?) Передается "как есть" (после неэкранирования% XX) какой-то серверной прикладной программе (php, asp, jsp, cgi), и как это интерпретирует байты - это другая история). Рекомендуется указывать путь / пользователь / пароль / аргументы utf-8, но это не обязательно, и не все это соблюдают.
Таким образом, вам определенно следует разрешить не ASCII (у нас больше нет 80-х), но то, что вы делаете с этим, может быть сложным. Попробуйте использовать Unicode и держитесь подальше от устаревших кодовых страниц, если возможно, пометьте свой контент правильной кодировкой / кодировкой (используя мета в html, языковые директивы для asp/jsp и т. Д.)