Директива, которая позволяет блокировать от индексации полностью весь сайт или определённые разделы. Может быть полезно для закрытия от сканирования служебных, динамических или временных страниц (символ #
отвечает за комментарии в коде и игнорируется краулерами).
User-agent: *
# Закрываем раздел /cms и все файлы внутри
Disallow: /cms
# Закрываем папку /images/resized/ (сами изображения разрешены к сканированию)
Disallow: /api/resized/
# Запретить GET параметр view:
Disallow: *view=*$
# Запретить все GET параметры:
Disallow: /*?
# Запретить http://example.com/page и все дочерние страницы:
Disallow: /page/
# Запретить страницу http://example.com/page, но не дочерние:
Disallow: /page/$
# Запрет индексирования php файлов:
Disallow: /*.php$
# Запретить индексирование pdf файлы:
Disallow: /*.pdf$
# Не индексировать UTM-метки:
Disallow: /*?utm_source*
*
— любая последовательность символов в URL. По умолчанию к концу каждого правила, описанного в файле robots.txt, приписывается спецсимвол *.
$
— символ в конце URL-адреса, он используется чтобы отменить использование * на конце правила.
User-agent: *
# Закрываем URL, начинающиеся с /photo после домена. Например:
# /photos
# /photo/overview
Disallow: /photo
# Закрываем все URL, начинающиеся с /blog/ после домена и заканчивающиеся /stats/
Disallow: /blog/*/stats$
Как упоминалось выше, широко применяются два оператора: и $. В примере астериск указывает на любые символы в названии файла, а оператор
$
гарантирует, что расширение .json находится точно в конце адреса, и правило не затрагивает страницы вроде /locations.json.html (вдруг есть и такие).
User-agent: *
# Блокируем любые файлы с расширением .json
Disallow: /*.json$
Заблокировать URL с параметром ?
, после которого следуют GET-запросы (метод передачи данных от клиента серверу). Этот приём активно используется, если у проекта настроено ЧПУ для всех страниц и документы с GET-параметрами точно являются дублями.
User-agent: *
# Блокируем любые URL, содержащие символ ?
Disallow: /*?
Disallow: /*?*id=
Disallow: /*?*op=
User-agent: *
# Блокируем страницу результатов поиска
Disallow: /search.php?query=*
Чтобы не индексировать страницы с динамическими GET параметрами (сортировки, сессии и т.д.) Яндекс ввел директиву Clean-param которая сводит такие адреса к одному. Также директиву следует выносить в отдельный блок. В robots.txt указывается имя GET переменной которая будет игнорироваться и через пробел адрес страницы которая будет использована. Например для следующих адресов:
http://example.com/category
http://example.com/category?sort=asc
http://example.com/category?sort=desc
Запись будет следующая:
User-agent: Yandex
Clean-param: sort /category
# Можно указать несколько GET переменных через символ &:
User-agent: Yandex
Clean-param: sort&session /category
Допустим, на вашем сайте есть 3 страницы с одинаковым содержанием:
http://site.ru/folder/page.php?get=1&r_id=985
http://site.ru/folder/page.php?get=2&r_id=985
http://site.ru/folder/page.php?get=3&r_id=985
Все эти страницы одинаковые по содержимому, но они имеют в своем URL разный параметр get=
, который в данном случае применяется для отслеживания сайта, с которого пользователь сделал запрос и перешел на страницу. Получается, что он меняет URL, но содержимое остается таким же, поэтому все три URL-адреса ведут на ту же страницу http://site.ru/folder/page.php?r_id=985
.
Во избежание обхода роботов всех трех страниц, в robots.txt нужно прописать Clean-param:
User-agent: *
Disallow:
Clean-param: get /folder/page.php
Данные инструкции указывают всем роботам поисковых систем объединить все URL страницы к единой ссылке: http://site.ru/folder/page.php?r_id=985
Для адресов типа www.site1.ru/forum/showthread.php?s=681498b9648949605&t=8243
и www.site1.ru/forum/showthread.php?s=1e71c4427317a117a&t=8243
robots будет содержать:
User-agent: *
Disallow:
Clean-param: s /forum/showthread.php
Для адресов типа www.site2.ru/index.php?page=1&sid=2564126ebdec301c607e5df
и www.site2.ru/index.php?page=1&sid=974017dcd170d6c4a5d76ae
robots будет содержать:
User-agent: *
Disallow:
Clean-param: sid /index.php
Если таких параметров несколько www.site1.ru/forum_old/showthread.php?s=681498605&t=8243&ref=1311
и www.site1.ru/forum_new/showthread.php?s=1e71c417a&t=8243&ref=9896
robots будет содержать:
User-agent: *
Disallow:
Clean-param: s&ref /forum*/showthread.php
Если параметр используется в нескольких скриптах www.site1.ru/forum/showthread.php?s=681498b9648949605&t=8243
и www.site1.ru/forum/index.php?s=1e71c4427317a117a&t=8243
robots будет содержать:
User-agent: *
Disallow:
Clean-param: s /forum/index.php
Clean-param: s /forum/showthread.php