Должен ли я кодировать специальный символ в моих картах сайта? - PullRequest
1 голос
/ 10 февраля 2009

У меня есть URL, который содержит специальные символы. Например:

http://www.example.com/bléèàû.html

Если вы введете этот URL в браузере, мой веб-сервер отобразит правильную страницу (он может обрабатывать специальные символы).

Я посмотрел спецификации sitemaps , и не ясно, может ли файл sitemaps содержать специальный символ. Из того, что я понимаю о протоколе, если URL работает нормально, а сервер обслуживает правильную страницу, а файл XML имеет кодировку UTF-8, тогда все в порядке.

Например, эта запись является допустимой записью карты сайта:

   <url>
      <loc>http://www.example.com/bléèàû.html</loc>
      <changefreq>weekly</changefreq>
   </url>

Кто-нибудь может подтвердить это?

[Обновить] Причина, по которой я не хочу кодировать специальные символы, заключается в том, что я не хочу вводить повторяющиеся URL-адреса для одного и того же содержимого. Например

http://www.example.com/bl%C3%A9%C3%A8%C3%A0%C3%BB.html

и

http://www.example.com/bléèàû.html

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

Ответы [ 4 ]

4 голосов
/ 10 февраля 2009

Спецификация файлов Sitemap не говорит. В нем приведены примеры URL-адресов в различных экранированных формах, но не определено, допустим ли первый пример (необработанные символы). Он называет их только «URL-адресами», без ссылки на конкретное определение «URL-адреса» или RFC, в которых будет уточнено, имеют ли они в виду URI старой школы ASCII или IRI (которые могут содержать не-ASCII символы).

Так что было бы безопаснее% -escape кодировать UTF-8 URL. Тогда ссылка будет работать глобально и должна быть представлена ​​пользователю как символ Unicode во всех современных браузерах.

<loc>http://www.example.com/bl%C3%A9%C3%A8%C3%A0%C3%BB.html</loc>
2 голосов
/ 10 февраля 2009

Несмотря на то, что карта сайта должна быть закодирована в UTF-8, это не означает, что содержащиеся в ней URL-адреса имеют в своем распоряжении весь UTF-8.

URL-адреса должны быть подмножеством US-ASCII, как указано в RFC 1738 . Я не верю URL вашего примера:

http://www.example.com/bléèàû.html

действительны в соответствии с этой ссылкой и вместо этого должны быть закодированы / экранированы URL.

0 голосов
/ 10 февраля 2009

Для тех пользователей, которые не имеют возможности легко вводить специальные символы **, я предлагаю вам также принять самое близкое приближение на стороне сервера. (т.е. псевдоним или пересылка /bleeau.html в /bléèàû.html)

** Например, браузеры сотовых телефонов с ограниченными клавиатурами и люди с различными раскладками языка клавиатуры.

0 голосов
/ 10 февраля 2009

В спецификации сказано, что карты сайта должны быть в кодировке UTF-8. Если URL-адрес правильный и используется на вашем сайте, включите его в карту сайта.

...