& Amp; в ссылках карты сайта они правильные?

17

Простой вопрос, я спрашиваю, просто чтобы убедиться.

Генератор карты сайта Google сгенерировал файл sitemap.txt со ссылками, написанными так:

http://www.domain.com/category.htm?name=some-name&cat_id=8

Правильно ли использовать &эти ссылки вместо &или это просто ошибка, допущенная генератором карты сайта?

Благодарю.

Марко Демайо
источник

Ответы:

11

Это верно. Это HTML-сущность для амперсанда ( &) и его правильное символьное представление в правильно закодированном URL. Амперсанды ( &), а также <и >являются специальными символами в XML и HTML и должны отображаться с использованием их специальных символьных объектов.

Джон Конде
источник
Вы уверены, что все амперсанды должны быть экранированы? Я думал, что это только для тех разделительных параметров в строках запроса. Я всегда экранировал амперсанды в именах файлов или папок или в самих параметрах, используя процентное кодирование ( %26): например,http://foo/a%26r.php?foo=1&amp;genre=r%26b
Lèse majesté
Я не уверен, что кодировка процентов действительна или нет, поэтому не могу сказать наверняка.
Джон Конде
@ Lèse - поскольку это XML-документ, его необходимо экранировать, если вы не используете CDATAузел (только что заметил, что bdadam сказал то же самое, но гораздо раньше меня)
Марк Хендерсон,
>не нужно строго кодировать сущность в XML.
MrWhite
6

Ваш файл Sitemap должен быть в кодировке UTF-8 (обычно это можно сделать при сохранении файла). Как и во всех XML-файлах, любые значения данных (включая URL-адреса) должны использовать escape-коды объекта для символов.

Это может помочь, http://sitemaps.org/protocol.php

Джереми
источник
К сожалению, эта ссылка сейчас не работает.
18:00
2

Google отклоняет карту сайта как поврежденную, если в URL-адресе есть символ &. Он принимает его, когда вы заменяете & на & amp;

НО: если вы позже проверите список ошибок сканирования в инструменте Google для веб-мастеров, он сообщит, что этот URL-адрес файла карты сайта поврежден, поскольку он содержит & amp; вместо того &.

Таким образом, правильным решением является изменение URL-адреса таким образом, чтобы он не содержал &. Или сообщите об этом как об ошибке в Google.

Клаус Хартнегг
источник
1

URL-кодирование и кодирование сущности XML - это не одно и то же. URL-кодировка необходима для замены специальных символов в URL-адресах, таких как &, которые можно использовать только для разделения параметров запроса. Кодировка сущности XML предназначена для кодирования специальных символов в XML (также XHTML). Это означает, что если у вас есть URL-адрес в файле XML (или XHTML), и этот URL-адрес содержит некоторые символы &, вы должны кодировать его в & amp ;. Так что в sitemap.xml у вас будут URL, как в вопросе от Марко Демайо.

bdadam
источник