Как управлять сканированием URL при использовании фасетной навигации
Фасетная навигация – это часто используемая на сайтах функция, позволяющая посетителям выбирать, как на страницах будут выглядеть различные объекты (например, товары, статьи или сведения о мероприятиях). Она популярна у разработчиков и удобна для пользователей, однако самая распространенная ее версия (основанная на параметрах URL) может приводить к появлению бесконечных пространств URL, что создает следующие проблемы для сайта:
- Избыточное сканирование. URL, созданные для фасетной навигации, воспринимаются как новые, а поисковые роботы не могут без сканирования определить, окажется ли URL полезным. В результате им приходится обрабатывать большое количество URL фасетной навигации, прежде чем становится понятно, что это ненужные URL.
- Медленное сканирование новых страниц. Из сказанного выше следует, что, если поисковые роботы заняты сканированием бесполезных URL, у них остается меньше времени на поиск новых нужных URL.
В строке запроса у типичного URL фасетной навигации может быть много разных параметров, связанных со свойствами фильтруемых объектов. Пример:
https://example.com/items.shtm?products=fish&color=radioactive_green&size=tiny
Если изменить такие параметры URL, как products
, color
и size
, то на странице, к которой он относится, будет показан другой набор объектов. Это значит, что сочетаний критериев фильтрации может быть очень много, вследствие чего возможных URL тоже будет много. Сберечь ресурсы в такой ситуации вам помогут следующие методы:
- Если вам не нужно индексировать URL фасетной навигации, запретите их сканирование.
- Если такие URL должны индексироваться, следуйте нашим рекомендациям из раздела ниже. Примите во внимание, что обычно при сканировании URL фасетной навигации должно быть обработано огромное число URL и выполнено множество операций, необходимых для отрисовки таких страниц. На это расходуется большой объем вычислительных ресурсов сервера, на котором размещен сайт.
Как ограничить сканирование URL фасетной навигации
Если вы хотите сберечь ресурсы сервера и вам не нужно, чтобы URL фасетной навигации показывались в Google Поиске, вы можете ограничить сканирование этих URL следующими способами:
-
Запретите сканирование URL фасетной навигации, используя файл robots.txt. Обычно сканировать отфильтрованные объекты не нужно, так как на это без какой-либо необходимости тратятся ресурсы сервера. Разрешите сканирование страниц отдельных объектов и страницы, на которой показаны все товары без фильтрации.
user-agent: Googlebot disallow: /*?*products= disallow: /*?*color= disallow: /*?*size= allow: /*?products=all$
-
Указывайте критерии фильтрации, используя фрагменты URL.
В целом Google Поиск не поддерживает фрагменты URL при сканировании и индексировании.
Если ваш механизм фильтрации основан на фрагментах URL, он не будет влиять на сканирование (ни положительно, ни отрицательно). Вот пример того, как можно использовать фрагменты URL вместо параметров URL:
https://example.com/items.shtm#products=fish&color=radioactive_green&size=tiny
Ещё два способа указать, какие URL фасетной навигации нужно или не нужно сканировать, – это использовать тег link
с атрибутом rel="canonical"
и атрибут анкера rel="nofollow"
. Однако эти методы менее эффективны в долгосрочной перспективе, чем ранее упомянутые.
-
Если вы используете атрибут
rel="canonical"
для того, чтобы указать, какой URL является канонической версией URL, предназначенного для фасетной навигации, то частота сканирования неканонических версий этих URL со временем может снизиться. Например, если у вас три типа страниц с фильтрами, можно добавить атрибутrel="canonical"
для версии без фильтров, т. е. тег<link rel="canonical" href="https://example.com/items.shtm?products=fish" >
будет указывать на каноническую версию URLhttps://example.com/items.shtm?products=fish&color=radioactive_green&size=tiny
. -
Можно использовать атрибуты
rel="nofollow"
в анкерах, указывающих на страницы с отфильтрованными результатами, но при этом у каждого анкера, указывающего на конкретный URL, должен быть атрибутrel="nofollow"
, иначе он не будет работать эффективно.
Как проверить, оптимизированы ли URL фасетной навигации для сайтов
Если ваши URL, предназначенные для фасетной навигации, нужно сканировать и индексировать, воспользуйтесь рекомендациями ниже. Они помогут вам минимизировать проблемы, связанные с обработкой большого количества возможных URL на вашем сайте.
-
Используйте стандартный для отрасли разделитель
&
между параметрами URL. Поисковым роботам сложно понять, что запятая (,
), точка с запятой (;
) и скобки ([
и]
) могут служить разделителями параметров, поскольку в большинстве случаев они таковыми не являются. -
Если вы кодируете фильтры в пути URL (например, они могут выглядеть как
/products/fish/green/tiny
), убедитесь, что фильтры всегда указываются в одном порядке и не дублируются. -
Возвращайте код статуса
404
, если при использовании определенной комбинации фильтров не возвращается результат. Предположим, на вашем сайте нет такого товара, как рыба гирелла (green fish). В этом случае пользователи и поисковые роботы должны видеть ошибку "Не найдено" с соответствующим ей кодом статуса HTTP (404
). То же самое должно происходить, если URL содержит фильтры-дубликаты или невозможные сочетания фильтров, а также относится к несуществующей странице. Кроме того, если сочетание фильтров не дает результатов, не перенаправляйте пользователя на общую страницу с ошибкой "Не найдено". Вместо этого показывайте ошибку "Не найдено" с кодом статуса HTTP404
для URL, который привел к ее появлению.