HackWare.ru

Как исключить из индексации страницы с определёнными параметрами в 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

7. Как запретить роботам доступ к ссылкам на определённом порту

8. Готовые решения для запрета индексирования сайта поисковыми системами


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

Передо мной возникла задача исключить из индексирования поисковыми системами страницы, содержащие определённую строку запроса (уникальные для пользователя отчёты, каждый из которых имеет свой адрес). Я решил эту задачу для себя, а также решил полностью разобраться с вопросами разрешения и запрещения индексирования сайта. Этому посвящён данный материал. В нём рассказывается не только о продвинутых случаях использования 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: Указывает на каталог или страницу относительно корневого домена, которые можно сканировать агенту пользователя, определенному выше. Используется, для того чтобы отменить директиву Disallow и разрешить сканирование подкаталога или страницы в закрытом для сканирования каталоге. Если это страница, должен быть указан полный путь к ней, как в адресной строке браузера. Если это каталог, путь к нему должен заканчиваться косой чертой (/). Поддерживается подстановочный знак * для обозначения префикса, суффикса пути или всего пути.

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

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

Allow: [путь]

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

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

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

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

В Яндекс.Вебмастер (https://webmaster.yandex.ru/) есть инструмент для проверки конкретных адресов на разрешение или запрет их индексации в соответствии с файлом robots.txt вашего файла.

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

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

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

В Search Console (адрес https://www.google.com/webmasters/tools/robots-testing-tool) имеется аналогичный инструмент. Он находится во вкладке Сканирование. Называется Инструмент проверки файла 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, то пишите в комментариях и задавайте ваши вопросы – я подготовлю больше примеров.

Смотрите также: Полное руководство по mod_rewrite

Как запретить роботам доступ к ссылкам на определённом порту

Предположим, есть частный веб-сервер, настроенный на нетрадиционный порт (скажем, 6677). Все люди могут иметь доступ ко всем URL-адресам сайта на порту 6677. Ссылки с mysite.ru:6677 также проиндексированы Google, что может быть нежелательно.

Итак, как я могу запретить доступ к страницам сайта в robots.txt на нестандартном порте?

Если вы хотите запретить сканеру доступ к example.com:6677 с помощью robots.txt, вам просто нужно разместить файл robots.txt на соответствующем порту, то есть: http://example.com:6677/robots.txt

Спецификация не позволяет указывать порт в самом файле robots.txt. Все указанные пути используют тот же протокол, номер порта и хост, с которого осуществляется доступ к файлу.

Но, как уже говорилось в этой статье, запрет в robots.txt необязательно предотвращает индексирование URL-адреса; он предотвращает попадание в индекс поисковых систем.

То есть, предыдущий совет подойдёт для тех, у кого сайт на нестандартном порту является отдельным виртуальным хостом со своим собственным содержимым.

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

В такой ситуации необходимо проверить порт в серверном скрипте и отправить клиенту соответствующий тег META или заголовок HTTP-ответа. В PHP вы можете сделать это примерно так:

<?php
// Блокируем роботов от доступа к порту 6677
if ($_SERVER['SERVER_PORT'] == '6677') {
	header('X-Robots-Tag: noindex');
}
?>

Помните, что все заголовки должны выводиться строго до отправки других данных, поскольку после отправки данных заголовки уже отправлены и изменить их позже невозможно — это вызовет ошибку в PHP.

Можно пойти кардинально и запретить доступ поисковым систем к определённому порту, добавив примерно следующие правила в файле .htaccess:

# Блокируем доступ Google к порту 6677:
RewriteCond "%{SERVER_PORT}" "^6677$"
RewriteCond %{HTTP_USER_AGENT} Google [NC]
RewriteRule .* - [F]

# Блокируем доступ Yandex к порту 6677:
RewriteCond "%{SERVER_PORT}" "^6677$"
RewriteCond %{HTTP_USER_AGENT} Yandex [NC]
RewriteRule .* - [F]

8. Готовые решения для запрета индексирования сайта поисковыми системами

  1. Как поисковым системам запретить индексирование только главной страницы сайта

История обновлений

No update history yet.

Рекомендуется:
↑