Яндекс.Маркет: как устранить сбой «URL предложения не соответствует стандарту RFC-1738»

[10 ноября 2016 г.]    Российская сборка Magento 2.49.12
Magento 2: модули и услуги
#1 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8884
  • Регистрация: 20.02.2010

28.10.2015 17:17

Надо проанализировать проблемный веб-адрес («URL предложения») в личном кабинете магазина в Яндекс.Маркете.

В частности, на снимке экрана ниже источником нарушения стандарта RFC-1738 является слишком длинный веб-адрес товарного предложения:
Прикрепленное изображение: templatemonster-kids-fashion-53174-03.png

Адрес оказался слишком длинным по 2 причинам:
  • адрес использует символы кириллицы, и при приведения адреса к стандарту RFC 3986 посредством функции urlencode каждый символ кирилицы кодируется 3-символьным кодом (например: %D0).
    Таким образом, длина адреса увеличивается почти в 3 раза.
    Все современные браузеры такие адреса обрабатывают без сбоев, однако устаревшее программное обеспечение Яндекс.Маркета слишком длинные адреса обрабатывать не в состоянии (другой знаменитой проблемой устаревшего программное обеспечения Яндекс.Маркета является отсутствие до сих пор поддержки кириллических доменов).
  • в Magento включена оация включения в веб-адрес товара полной иерархии родительских товарных разделов.


Повлиять на причину №1 Вы не можете, однако устранение причины №2 порой бывает достаточно для устранения проблемы.
Для этого надо указать «нет» значением опции «Система» → «Настройки» → «Каталог» → «Каталог» → «Оптимизация в поисковых системах (SEO)» → «Добавлять ли в адреса товарных страниц названия товарных разделов иерархической цепочки товара?»
Прикрепленное изображение: templatemonster-kids-fashion-53174-04.png

Затем надо удалить кэш и перестроить расчётную таблицу адресов товаров:
Прикрепленное изображение: templatemonster-kids-fashion-53174-05.png

#2 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8884
  • Регистрация: 20.02.2010

28.10.2015 23:19

Бывает, что устранения причины №2 недостаточно для устранения описанной проблемы.
Например адрес товара может быть
http://magento-forum.ru/кухня-юля-боковина-заглушка-тумбы-низ-правая-вишня-коньяк-оксамит-набор-мебели-для-кухни-юля-из-серии-833.html
.
После кодирования функцией urlencode адрес станет таким
http://magento-forum.ru/%D0%BA%D1%83%D1%85%D0%BD%D1%8F-%D1%8E%D0%BB%D1%8F-%D0%B1%D0%BE%D0%BA%D0%BE%D0%B2%D0%B8%D0%BD%D0%B0-%D0%B7%D0%B0%D0%B3%D0%BB%D1%83%D1%88%D0%BA%D0%B0-%D1%82%D1%83%D0%BC%D0%B1%D1%8B-%D0%BD%D0%B8%D0%B7-%D0%BF%D1%80%D0%B0%D0%B2%D0%B0%D1%8F-%D0%B2%D0%B8%D1%88%D0%BD%D1%8F-%D0%BA%D0%BE%D0%BD%D1%8C%D1%8F%D0%BA-%D0%BE%D0%BA%D1%81%D0%B0%D0%BC%D0%B8%D1%82-%D0%BD%D0%B0%D0%B1%D0%BE%D1%80-%D0%BC%D0%B5%D0%B1%D0%B5%D0%BB%D0%B8-%D0%B4%D0%BB%D1%8F-%D0%BA%D1%83%D1%85%D0%BD%D0%B8-%D1%8E%D0%BB%D1%8F-%D0%B8%D0%B7-%D1%81%D0%B5%D1%80%D0%B8%D0%B8-833.html
.
Этот адрес содержит 560 символов.
Опытным путём я установил, что Яндекс.Маркет пропускает адреса до 510 символов (в то время как все современные браузеры - не менее чем до 2000 символов).
Поэтому хотя причина №2 и устранена, Яндекс.Маркет такой адрес всё равно не пропустит (равно как и не пропустит почему-то адрес с некодированныи символами кириллицы).

Поэтому в версии 2.48.2 обновил алгоритм формирования адреса товара для Яндекс.Маркета: если адрес превышает установленный Яндекс.Маркетом предел, но вместо этого адреса передаётя специальный короткий адрес вида
http://site.ru/catalog/product/view/id/1785
, который Magento также понимает.

Поделиться темой: