Loading...
X

Как исключить из индексации страницы с определёнными параметрами в URL и другие техники контроля индексации сайта поисковыми системами


Оглавление

1. Вы можете контролировать, какие страницы можно индексировать поисковым системам, а какие разделы сайта закрыты от них

2. Контроль индексации в файле robots.txt

2.1 Файл robots.txt

2.2 Запрет индексации страницы с определёнными параметрами с помощью robots.txt

2.3 Запрет индексации поисковыми системами, но разрешение для сканеров рекламных сетей

2.4 Запрет индексации всех страниц со строкой запроса

2.5 Запрет индексации страниц с определённым параметром, передающимся методом GET

2.6 Запрет индексации страниц с любым из нескольких параметров

2.7 Как запретить поисковым системам индексировать страницы, в URL которых несколько определённых параметров

2.8 Как закрыть сайт от индексации

2.9 Разрешение всем роботам полный доступ

2.10 Запрет всем поисковым системам индексировать часть сайта

2.11 Блокировка отдельных роботов

2.12 Разрешить индексировать сайт одной поисковой системой

2.13 Запрет на индексацию всех файлов, кроме одного

3. Как проверить работу robots.txt

4. Запрет индексации страницы с помощью мета тега robots

5. Запрет индексации с помощью заголовка X-Robots-Tag в HTTP

6. Блокировка доступа поисковым системам с помощью mod_rewrite


Вы можете контролировать, какие страницы можно индексировать поисковым системам, а какие разделы сайта закрыты от них

Передо мной возникла задача исключить из индексирования поисковыми системами страницы, содержащие определённую строку запроса (уникальные для пользователя отчёты, каждый из которых имеет свой адрес). Я решил эту задачу для себя, а также решил полностью разобраться с вопросами разрешения и запрещения индексирования сайта. Этому посвящён данный материал. В нём рассказывается не только о продвинутых случаях использования robots.txt, но также и других, менее известных способах контроля индексации сайта.

В Интернете много примеров, как исключить определённые папки из индексации поисковыми системами. Но может возникнуть ситуация, когда нужно исключить страницы, причём не все, а содержащие только указанные параметры.

Пример страницы с параметрами: сайт.ru/?act=report&id=7a98c5

Здесь act – это имя переменной, значение которой report, и id – это тоже переменная со значением 7a98c5. Т.е. строка запроса (параметры) идут после знака вопроса.

Закрыть страницы с параметрами от индексирования можно несколькими способами:

  • с помощью файла robots.txt
  • с помощью правил в файле .htaccess
  • с помощью метатега robots

Контроль индексации в файле robots.txt

Файл robots.txt

Файл robots.txt – это простой текстовый файл, который размещается в корневой директории (папке) сайта, и содержащий одну или более записей. Типичный пример содержимого файла:

User-agent: *
Disallow: /cgi-bin/
Disallow: /tmp/
Disallow: /~joe/

В этом файле из индексации исключены три директории.

Помните, что строку с "Disallow" нужно писать отдельно для каждого URL префикса, который вы хотите исключить. То есть вы не можете написать "Disallow: /cgi-bin/ /tmp/" в одну строку. Также помните о специальном значении пустых строк – они разделяют блоки записей.

Регулярные выражения не поддерживаются ни в строке User-agent, ни в Disallow.

Файл robots.txt должен размещаться в корневой папке вашего сайта. Его синтаксис следующий:

User-agent: *
Disallow: /папка или страница, запрещённая для индексации
Disallow: /другая папка

В качестве значения User-agent указана * (звёздочка) – это соответствует любому значению, т.е. правила предназначены для всех поисковых машин. Вместо звёздочки можно указать имя определённой поисковой машины, для которой предназначено правило.

Можно указать более чем одну директиву Disallow.

В файле robots.txt можно использовать подстановочный символы:

  • * обозначает 0 или более экземпляров любого действительного символа. Т.е. это любая строка, в том числе и пустая.
  • $ обозначает конец URL.

Другие символы, в том числе &, ?, = и т.д. понимаются буквально.

Запрет индексации страницы с определёнными параметрами с помощью robots.txt

Итак, я хочу заблокировать адреса вида (вместо ЗНАЧЕНИЕ может быть любая строка): сайт.ru/?act=report&id=ЗНАЧЕНИЕ

Для этого подойдёт правило:

User-agent: *
Disallow: /*?*act=report&id=*

В нём / (слеш) означает корневую папку сайта, затем следует * (звёздочка), она означает «что угодно». Т.е. это может быть любой относительный адрес, например:

  • /ru
  • /page.php
  • /order/new/id

Затем следует ? (знак вопроса), который трактуется буквально, т.е. как знак вопроса. Следовательно далее идёт строка запроса.

Вторая * означает, что в строке запроса может быть что-угодно.

Затем идёт последовательность символов act=report&id=*, в ней act=report&id= трактуется буквально, как есть, а последняя звёздочка вновь означает любую строку.

Запрет индексации поисковыми системами, но разрешение для сканеров рекламных сетей

Если вы закрыли сайт от индексирования для поисковых систем, либо закрыли определённые его разделы, то на них не будет показываться реклама AdSense! Размещение рекламы на страницах, закрытых от индексации, может считаться нарушением и в других партнёрских сетях.

Чтобы это исправить, добавьте в самое начало файла robots.txt следующие строки:

User-agent: Mediapartners-Google
Disallow:

User-agent: AdsBot-Google*
Disallow:

User-Agent: YandexDirect
Disallow:

Этими строками мы разрешаем ботам Mediapartners-Google, AdsBot-Google* и YandexDirect индексировать сайт.

Т.е. файл robots.txt для моего случая выглядит так:

User-agent: Mediapartners-Google
Disallow:

User-agent: AdsBot-Google*
Disallow:

User-Agent: YandexDirect
Disallow:

User-agent: *
Disallow: /*?*act=report&id=*

Запрет индексации всех страниц со строкой запроса

Это можно сделать следующим образом:

User-agent: *
Disallow: /*?*

Данный пример блокирует все страницы, содержащие в URL ? (знак вопроса).

Помните: знак вопроса, стоящий сразу после имени домена, например, site.ru/? равнозначен индексной странице, поэтому будьте осторожны с данным правилом.

Запрет индексации страниц с определённым параметром, передающимся методом GET

К примеру, нужно заблокировать URL, содержащие в строке запроса параметр order, для этого подойдёт следующее правило:

User-agent: *
Disallow: /*?*order=

Запрет индексации страниц с любым из нескольких параметров

Предположим, нам нужно запретить индексировать страницы, содержащие в строке запроса или параметр dir, или параметр order, или параметр p. Для этого перечислите каждый из параметров для блокировки в отдельных правилах примерно следующим образом:

User-agent: *
Disallow: /*?*dir=
Disallow: /*?*order=
Disallow: /*?*p=

Как запретить поисковым системам индексировать страницы, в URL которых несколько определённых параметров

К примеру, нужно исключить из индексации страницы, содержание в строке запроса параметр dir, параметр order и параметр p. К примеру, страница с таким URL должна быть исключена из индексации: mydomain.com/new-printers?dir=asc&order=price&p=3

Этого можно добиться используя директиву:

User-agent: *
Disallow: /*?dir=*&order=*&p=*

Вместо значений параметров, которые могут постоянно меняться, используйте звёздочки. Если параметр всегда имеет одно значение, то используйте его буквальное написание.

Как закрыть сайт от индексации

Чтобы запретить всем роботам индексировать весь сайт:

User-agent: *
Disallow: /

Разрешение всем роботам полный доступ

Чтобы предоставить всем роботам полный доступ для индексации сайта:

User-agent: *
Disallow:

Либо просто создайте пустой файл /robots.txt, либо вообще не используйте его – по умолчанию, всё, что не запрещено для индексации, считается открытым. Поэтому пустой файл, либо его отсутствие – означают разрешение на полное индексирование.

Запрет всем поисковым системам индексировать часть сайта

Чтобы закрыть некоторые разделы сайта от всех роботов, используйте директивы следующего вида, в которых замените значения на свои:

User-agent: *
Disallow: /cgi-bin/
Disallow: /tmp/
Disallow: /junk/

Блокировка отдельных роботов

Для закрытия доступа отдельным роботам и поисковым системам, используйте имя робота в строке User-agent. В данном примере закрыт доступ для BadBot:

User-agent: BadBot
Disallow: /

Помните: многие роботы игнорируют файл robots.txt, поэтому это не является надёжным средством закрыть сайт или его часть от индексирования.

Разрешить индексировать сайт одной поисковой системой

Допустим, мы хотим разрешить индексировать сайт только Google, а другим поисковым системам закрыть доступ, тогда сделайте так:

User-agent: Google
Disallow:

User-agent: *
Disallow: /

Первые две строки дают разрешение роботу Google на индексацию сайта, а последние две строки запрещают это всем остальным роботам.

Запрет на индексацию всех файлов, кроме одного

Директива Allow определяет пути, которые должны быть доступны указанным поисковым роботам. Если путь не указан, она игнорируется.

Использование:

Allow: [путь]

Важно: Allow должна следовать до Disallow.

Примечание: Allow не является частью стандарта, но многие популярные поисковые системы её поддерживают.

В качестве альтернативы, с помощью Disallow вы можете запретить доступ ко всем папкам, кроме одного файла или одной папки.

Как проверить работу robots.txt

В Яндекс.Вебмастер есть инструмент для проверки конкретных адресов на разрешение или запрет их индексации в соответствии с файлом robots.txt вашего файла.

Для этого перейдите во вкладку Инструменты, выберите Анализ robots.txt. Этот файл должен загрузиться автоматически, если там старая версия, то нажмите кнопку Проверить:

Затем в поле Разрешены ли URL? введите адреса, которые вы хотите проверить. Можно за один раз вводить много адресов, каждый из них должен размещаться на новой строчке. Когда всё готово, нажмите кнопку Проверить.

В столбце Результат если URL адрес закрыт для индексации поисковыми роботами, он будет помечен красным светом, если открыт – то зелёным.

В Search Console имеется аналогичный инструмент. Он находится во вкладке Сканирование. Называется Инструмент проверки файла robots.txt.

Если вы обновили файл robots.txt, то нажмите на кнопку Отправить, а затем в открывшемся окно снова на кнопку Отправить:

После этого перезагрузите страницу (клавиша F5):

Введите адрес для проверки, выберите бота и нажмите кнопку Проверить:

Запрет индексации страницы с помощью мета тега robots

Если вы хотите закрыть страницу от индексации, то в теге <head>…</head> пропишите:

<meta name="robots" content="noindex,nofollow>

Слова noindex,nofollow означают, что страница закрыта от индексации и что поисковые машины не должны следовать по ссылкам, которые присутствуют на этой странице.

Если вы хотите закрыть страницу от индексации, но разрешить поисковым системам следовать по ссылкам на этой странице (чтобы можно было просканировать другую часть сайта), то используйте следующую строку:

<meta name="robots" content="noindex,follow>

Запрет индексации с помощью заголовка X-Robots-Tag в HTTP

Вы можете добавить в файл .htaccess строку:

Header set X-Robots-Tag "noindex, nofollow"

В результате в каждый ответ вашего сайта будет добавляться X-Robots-Tag HTTP заголовок, который запретит поисковым системам индексировать сайт.

Если вы добавили строку в файл .htaccess в корне вашего сайта, то это действие (запрет индексации) будет распространяться на весь сайт. Вы также можете разместить файл .htaccess с этой строкой в любой папке, чтобы запретить индексацию только её.

Если вы достаточно продвинутый пользователь Apache, вы можете использовать директиву <Files>, чтобы указывать файлы какого именно типа запрещены для индексации.

Например, запрет для индексации всех файлов с расширением .PDF:

<Files ~ "\.pdf$">
  Header set X-Robots-Tag "noindex, nofollow"
</Files>

Запрет для индексации всех файлов изображений (.png, .jpeg, .jpg, .gif):

<Files ~ "\.(png|jpe?g|gif)$">
  Header set X-Robots-Tag "noindex"
</Files>

Блокировка доступа поисковым системам с помощью mod_rewrite

На самом деле, всё, что было описано выше, НЕ ГАРАНТИРУЕТ, что поисковые системы и запрещённые роботы не будут заходить и индексировать ваш сайт. Есть роботы, которые «уважают» файл robots.txt, а есть те, которые его просто игнорируют.

С помощью mod_rewrite можно закрыть доступ для определённых ботов

RewriteEngine On

RewriteCond %{HTTP_USER_AGENT} Google [NC,OR]
RewriteCond %{HTTP_USER_AGENT} Yandex [NC]
RewriteRule ^ - [F]

Приведённые директивы заблокируют доступ роботам Google и Yandex для всего сайта.

Если, допустим, нужно закрыть для индексирования только одну папку report/, то следующие директивы полностью закроют доступ к этой папке (будет выдаваться код ответа 403 Доступ Запрещён) для сканеров Google и Yandex.

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} Google [NC,OR]
RewriteCond %{HTTP_USER_AGENT} Yandex [NC]
RewriteRule ^report/ - [F]

Если вам интересна блокировка доступа для поисковых систем к отдельным страницам и разделам сайта с помощью mod_rewrite, то пишите в комментариях и задавайте ваши вопросы – я подготовлю больше примеров.

4 observations on “Как исключить из индексации страницы с определёнными параметрами в URL и другие техники контроля индексации сайта поисковыми системами
  1. Тарас

    Здравствуйте Автор подскажите, а как закрыть все файлы  от индексации типа:

    самое близкое по значению, но тут папка

    Если, допустим, нужно закрыть для индексирования только одну папку report/, то следующие директивы полностью закроют доступ к этой папке (будет выдаваться код ответа 403 Доступ Запрещён) для сканеров Google и Yandex.

    RewriteEngine On
    RewriteCond %{HTTP_USER_AGENT} Google [NC,OR]
    RewriteCond %{HTTP_USER_AGENT} Yandex [NC]
    RewriteRule ^report/ - [F]

    А вот как закрыть (а может лучше перенаправление на главную) именно страниц по маске *.html с помощью mod_rewrite  подскажите пожалуйста

    Заранее Спасибо, С Уважением Тс

     
    Reply
    1. MiAl MiAl

      Приветствую! Для настройки индексации я бы в первую очередь рекомендовал использовать файл robots.txt. Для того, чтобы запретить индексировать все страницы, которые оканчиваются на .html, в файл robots.txt запишите:

      User-agent: *
      Disallow: *.html$

      И всё!

      Если вам всё равно хочется использовать mod_rewrite, то помните, что без острой необходимости не нужно делать так, чтобы показывался разный контент для пользователей и для поисковых систем, поскольку это может быть воспринято как клоакинг.

      Тем не менее, если хотите с помощью mod_rewrite перенаправлять на главную страницу все запросы поисковых роботов к адресам, заканчивающимся на .html, то следующие правила в файле .htaccess сделают это:

      RewriteCond %{HTTP_USER_AGENT} Google [NC,OR]
      RewriteCond %{HTTP_USER_AGENT} Yandex [NC]
      RewriteRule .*\.html$ / [R]
      
       
      Reply
  2. Тарас

    Есть еще пару вопросов в robots.txt (уже сделано) у меня так  Disallow: /*.html это верно или обязательно добавить $ ?

    для  .htaccess вот так сделал 

    RewriteCond %{HTTP_USER_AGENT} Google [NC,OR]
    RewriteCond %{HTTP_USER_AGENT} Yandex [NC]

    знакомый посоветовал последнюю строчку вот так

    RewriteRule \.(html)$ – [NC,F,L]

    может страницы лучше блокировать чем перенаправлять?

     
    Reply
    1. MiAl MiAl

      Символ $ означает конец строки. В этом правиле он для того, чтобы не было ложных срабатываний, если, к примеру, .html встретится где-нибудь в неожиданной части имени файла или в передаваемой переменой, то опять же, эта страница будет закрыта от индексации. Может такая ситуация и не возникнет, но если возникнет, то будет сюрпризом для вас.

      • NC — означает независимо от регистра (например, .html и .HTML будут подходить)
      • F — означает запрет доступа (вы просили сделать редирект на главную)
      • L — означает не рассматривать другие правила в этом цикле, в этом случае не нужно, так как F срабатывает сразу, другие правила не рассматриваются в любом случае

      В общем, то, что вам порекомендовали, подойдёт для блокировки доступа. Что лучше, блокировать или перенаправлять — не знаю. Редиректы лучше без особой нужды не использовать — со стороны это может выглядеть подозрительно, особенно если они делаются только для поисковых систем — опять же, можно подумать на клоакинг.

       
      Reply

Leave Your Observation

Ваш e-mail не будет опубликован. Обязательные поля помечены *