Основными директивами robots.txt являются Disallow и allow они соответственно запрещают позволяют роботу индексировать соответствующие страницы.
Важно.
robots.txt является лишь рекомендацией, а не жестким правилом для робота поисковой системы. Всегда обращайте на соответствие файла sitemap.xml и robots.txt
Кратко в видео за пару минут:
Disallow robots.txt
Директива Disallow запрещает индексацию указанной страницы или раздела, однако с этим связано много заблуждений. Например:
- Страницы с данными пользователей;
- Разделы с результатами поиска по сайту;
- дубликаты страниц(проверьте чтобы их не было в sitemap.xml);
- разнообразные логи, скрипты;
- Страницы корзины, заказов и т.д.
- UTM-метки
- Сгенерированные страницы
Allow - директива
Данная директива разрешает индексирование разделов или страниц сайта. Является более приоритетной по отношению к Disallow
Пример:
User-agent: Yandex
Allow: /photo
Disallow: /
# запрещает скачивать все, кроме страниц
# начинающихся с '/photo'
Clean-Param
Директива работает только для роботов яндекса. Googlebot ее не воспринимает. Вот что сказано в официальном руководстве яндекса по этому поводу
При выборе директивы для страниц, которые не должны участвовать в поиске, если их адреса содержат GET-параметры, лучше использовать директиву Clean-Param, а не Disallow. При использовании Disallow может не получиться выявить дублирование адреса ссылки без параметра и передать некоторые показатели запрещенных страниц, например ссылочные.
Простыми словами яндекс рекомендует использовать нам данную директиву для идентификаторов сессий, например UTM-метки.
Использование специальных символов: *, $, #
Далее я предлагаю разобраться с использованием специальных символов *,$,# .
Спецсимол *
Данный спецсимвол означает любую последовательность символов, включая пустую. Данный символ по умолачанию ставится после каждой строчки указания, то есть:
User-agent: Yandex
Disallow: /antena/
По сути является
User-agent: Yandex
Disallow: /antena/*
Например:
User-agent: Yandex
Disallow: *.php
Запретит боту яндекса индексировать страницы с расширением php по всему сайту
Спецсивол $
Данный символ запрещает автоматическую подстановку * в конце строки.
User-agent: Yandex
Disallow: /ananas$ # запрещает только '/ananas'
Disallow: /ananas*$ # так же, как 'Disallow: /ananas'
# запрещает и /ananas.phpl и /ananas
Спецсимвол #
Показывает поисковой системе, что далее располагается комментарий до конца строки.
Как открыть или закрыть подкатегории robots.txt(подразделы)
Как правильно закрыть от индексации подраздел в robots.txt, не закрывая внутренние разделы этого подраздела?
Например:
https://progress-club.ru/catalog/natyazhnye-potolki/v-zal/
но не должен закрываться подраздел /v-zal/
Disallow: /natyazhnye-potolki/
так не работает
Правильным решением будет:
Disallow: /natyazhnye-potolki/
Allow: /natyazhnye-potolki/v-zal/
Allow: /natyazhnye-potolki/*/
Таким образом мы разрешаем /v-zal/ и все подразделы /natyazhnye-potolki/
Поскольку Allow является приоритетной директивой
Примеры директив
Важно:
- Недопустимо наличие пустых строчных переводов(Enter, shift+Enter) между директивами User-agent, Disallow и Allow
- В случае когда странице подходит несколько директив, то выбирается последняя в списке robots.txt
- При конфликте между Disallow и Allow приоритет отдается Allow.