Ошибки RSS-лент — это отдельная категория, так как лента считывается машиной: один лишний символ делает весь файл невалидным. Справка Yandex объясняет причины и дает процедуру исправления для каждой ошибки.
Почему ломаются ленты
Лента должна соответствовать строгим требованиям: формат данных, обязательные поля, ограничения на длину строк и URL, кодировка и синтаксис XML. Yandex называет мелочи, которые «убивают» файл: лишняя кавычка, неверный формат даты, слишком длинный URL.
Ошибки парсинга
- Некорректные атрибуты — значения должны быть в кавычках, кавычки должны соответствовать друг другу, атрибуты не должны перекрываться или быть вложены неверно, специальные символы должны быть экранированы (
&вместо обычного амперсанда), и ни один элемент не может повторять имя атрибута. - Отсутствующая кавычка — каждая открывающая кавычка требует закрывающей. Практический совет Yandex: если файл редактировался вручную, посмотрите, что изменилось в последнюю очередь.
- Некорректно переопределенный HTTP-заголовок — дублированные или неверно заданные заголовки в ленте.
- Неправильно закрытый CDATA — каждая секция идет от
<![CDATA[до]]>, и лишний символ]внутри может закрыть её раньше времени. Это тонкий момент, так как файл выглядит корректным, но парсер с этим не согласен. - Недопустимый символ — символ вне диапазона, разрешенного форматом.
Рабочий метод, предписанный Yandex
- Найдите код ошибки.
- Прочитайте, что он означает.
- Следуйте инструкциям.
- Исправьте все указанные ошибки аналогичным образом.
- Отправьте на повторную проверку.
- Примените рекомендации по предотвращению, чтобы это не повторилось.
Повторяющаяся инструкция, которую стоит обобщить
Почти каждая запись заканчивается двумя одинаковыми предложениями: прогоните файл через валидатор XML или YML, и если лента генерируется программно, проверьте код, который её создает. Это и есть настоящее исправление. Лента, исправленная вручную, сломается снова при следующей публикации; генератор, исправленный один раз, перестает допускать ошибку.
Как мы это применяем
We treat every feed error as a generator bug rather than a file to patch, which is what Yandex effectively recommends. The one that costs the most time is the prematurely closed CDATA section, because the file reads correctly to a human. Running the feed through a validator on every build — not only when something is reported — is a five-minute pipeline addition that removes this whole category.
Связанные услуги