Разница между сырыми квадратными скобками и их процентным кодированием в URL: что нужно знать
В последнем обсуждении на платформе Bluesky Джон Мюллер, адвокат Google по поиску, прояснил важный аспект работы с URL: сырые квадратные скобки и их процентное кодирование (%5B и %5D) рассматриваются как разные URL. Это заявление стало неожиданностью для многих, так как многие могли бы предположить, что эти две формы эквивалентны. Мюллер признал, что в прошлом он, возможно, давал неправильные советы по этому вопросу.
Почему закодированные скобки — это другой URL
Мюллер объяснил, что различие между сырыми и закодированными скобками связано с RFC 3986, стандартом интернета для синтаксиса URI. В разделе 2.2 этого документа указано, что URI, в которых заменен зарезервированный символ на его процентное кодирование, "не эквивалентны". Это стало ответом на вопрос Ванессы Фокс, бывшего сотрудника Google, которая интересовалась, рассматривает ли Google закодированную форму URL как другой URL. Она привела примеры с использованием ?filter[]=123 и ?filter%5B%5D=123, где одна форма использовалась в ссылках, а другая — для определения канонических версий. Мюллер также отметил, что использование сырых скобок в строке запроса технически недопустимо согласно RFC 3986, так как этот стандарт ограничивает использование скобок только для имен хостов и обрамления сырых IPv6 адресов. Он добавил, что регистры букв в кодировке не имеют значения, поэтому %5B и %5b считаются эквивалентными.Что делает Google с обеими версиями
Когда сервер возвращает одну и ту же страницу как для сырой, так и для закодированной форм, Google будет их индексировать. Если Google обнаружит, что контент идентичен (возможно, даже на уровне контрольной суммы), он устранит дублирование и выберет одну версию. Мюллер также упомянул, что браузер может закодировать скобки перед отправкой закодированной версии URL, однако если URL с скобками запрашивается из JavaScript, то скобки могут быть отправлены в сыром виде. Он рекомендовал всегда кодировать скобки в URL: "всегда кодируйте, никогда не показывайте []."Что уже говорит документация Google
Документация Google по структуре URL уже указывает на необходимость кодирования таких символов, как скобки. Она утверждает, что Google Search поддерживает URL, определенные IETF STD 66, стандартом, который включает в себя RFC 3986, и что "символы, определенные стандартом как зарезервированные, должны быть процентно закодированы".Сайты, использующие сырые скобки
Ванесса Фокс отметила, что она думала о сайте, который использует недопустимую нотацию скобок, и, несмотря на это, индексируется нормально. Мюллер заявил, что не ожидает проблем от использования такой структуры, но "не стал бы создавать новый сайт таким образом". Он также подчеркнул важность единообразия всех внутренних ссылок, включая метаданные, связанные с rel=canonical и структурированными данными.Почему это важно
Если существует несколько версий URL с одинаковым контентом, Google выберет одну из них. Если все ваши URL используют один и тот же формат (либо сырой, либо закодированный), вероятность того, что выбор будет в вашу пользу, увеличивается. Лучшим решением будет закодировать скобки в URL, как это рекомендовано в документации Google. Мюллер ожидает, что существующий сайт с сырыми скобками продолжит работать, и ваша задача заключается в том, чтобы убедиться, что ваши внутренние ссылки и метаданные указывают на одну и ту же версию URL.Взгляд в будущее
Мюллер предложил проверить, как краулеры и фетчеры, важные для вас, обрабатывают URL со скобками. Хотя он не назвал конкретные краулеры или фетчеры, которые могут иметь проблемы, он отметил, что некоторые из них могут не следовать строгим правилам Google при работе с URL со скобками. На момент 20 октября Google еще не опубликовал вторую часть серии видео "Non-Canonical Cabinet", посвященной robots.txt.
Источник:
Search Engine Journal