Правильный robots.txt для wordpress - важнейшие моменты
Здравствуйте, дорогие друзья!
Сейчас напишу статью о нашумевшем файле, которого так все боятся молодые владельцы сайтов. И не зря, ведь при неправильном его составлении могут возникнуть плохие последствия.
Тема статьи - файл robots.txt. Мы сегодня разберем от основ его составления до примера моего личного файла, который на данный момент хорошо работает. Материал получился довольно сложный и после первого прочтения у вас может не сложиться впечатление целостной картины, но основную мысль вы должны уловить. Будет много советов и инсайдерской информации, которая поможет сделать индексацию сайта более лучшей.
Перед составлением сайта я настоятельно рекомендую ознакомиться с важнейшими моментами работы файла роботс. Вы должны понимать хотя бы базовые принципы работы роботов поисковых систем, чтобы понимать, что и как стоит закрывать от индексации.
Важная теория
Сначала определение самого файла.
Файл Robots.txt дает понимание поисковых систем о том, что не нужно индексировать на сайте для предотвращение появления дублированного контента. Можно закрыть от индексации целые разделы, отдельные страницы, папки на хостинге и так далее. Все, что только в голову взбредет.
Именно на этот файл в первую очередь обращают внимание поисковые роботы при заходе на сайт, чтобы понять, куда стоит смотреть, а что необходимо игнорировать и не заносить в поисковую базу.
Также данный файл служит для облегчения работы поисковым роботам, чтобы они не индексировали много мусорных страниц. Это создает нагрузку на наш сайт, так как роботы будут долго лазить в процессе индексирования.
Файл Robots.txt размещается в корневом каталоге любого сайта и имеет расширение обычного текстового документа. То есть мы его можем редактировать у себя на компьютере с помощью обычного текстового редактора - блокнота.
Чтобы просмотреть содержимое этого файла на лбом сайта, стоит к доменному имени дописать название файла через правую наклонную черту вот так: имя домена.ру/robots.txt
Очень важно понимать, что для некоторых сайтов файл может различаться, так как может быть сложная структура. Но основная мысль в том, чтобы закрыть страницы, которые генерируются самим движком и создают дублированный контент. Также задача стоит в том, чтобы предотвратить попадание таких страниц в индекс, а не только их содержимого. Если у вас простой сайт на WordPress, то файл вам подойдет.
Также рекомендую во все вникать и постараться разобраться в тонкостях, так как это те моменты, которые постепенно могут губить ресурс.
Далее стоит понять, как поисковые системы относятся к этому файлу, так как в Яндексе и в Google имеются различия в восприятии запретов, которые прописываются в файле robots.
Различия в работе для Яндекса и Google
Единственное и пожалуй весомое различие проявляется в том, что Яндекс воспринимает запреты в файле, как некое обязательное правило и довольно хорошо следует всем запретам. Мы ему сказали, что эти страницы в индекс брать не нужно, он и не берет их.
В Google же ситуация совершенно иная. Дело в том, что Google действует по принципу "на зло". Что я имею ввиду? Мы ставим запрет на некоторые служебные страницы. Самой частой такой страницей на которую ставят запрет, является страница, создаваемая ссылкой "Ответить" при включенной функции древовидных комментариев.
Страница по такой ссылке имеет приставку "replytocom". Когда мы ставим запрет на такую страницу, google не может получить доступ к ее содержимому и забирает такой адрес в индекс. В итоге, чем больше комментариев на ресурсе, тем больше и мусорных адресов в индексе, что не есть хорошо.
Конечно же, так как мы закрыли такие адреса от индексации, то содержимое страниц не индексируется и не происходит появление дублированного контента в индекс. Об этом свидетельствует надпись «A description for this result is not available because of this site’s robots.txt».
Переводится это так: «Описание веб-страницы не доступно из-за ограничения в robots.txt».
Как бы ничего страшного. Но страница то попала в индекс, хоть и дублирования не произошло. В общем, это может быть, но можно ведь полностью избавиться от такого мусора.
И тут имеется несколько решений:
- Самый простой вариант - открыть такие адреса для робота google в файле robots, чтобы он смог их просканировать. Тогда он наткнется на мета-тег noindex в исходном коде страницы, который не позволит забрать документ в индекс.
Даем доступ - google сам во всем разбирается. Также на такие страницы добавляется атрибут канонических адресов rel="canonical", который укажет на главный адрес данной страницы, что скажет поисковой системе:
Данный адрес индексировать не нужно, так как имеется главная версия страницы, которую и стоит взять в базу.
В итоге, имеется 2 настройки, которые не позволят забрать мусор в индекс. Но это при условии, что подобные страницы открыты в файле роботс и гугл полностью имеет к ним доступ;
- Более сложный вариант заключается в полном закрытии таких ссылок от поисковых систем, чтобы их даже обнаружить нельзя было. Тут можно использовать различные скрипты и плагины. Хорошая функция имеется в плагине WordPress seo by yoast, которая убирает приставку "replytocom" из ссылок "Ответить".
Также имеются специальные плагины под настройку комментариев, где имеется функция закрытия таких ссылок. Можно и их использовать. Но зачем изобретать колесо? Ведь можно ничего не делать и все будет хорошо и без нашего участия. Главное здесь - открыть доступ, чтобы google смог разобраться во всей ситуации.
Google обязательно найдет такие страницы по внутренним ссылкам (в нашем случае для примера - ссылка "Ответить"). Об этом нам говорит сама справка гугла:
Хотя Google не сканирует и не индексирует содержание страниц, заблокированных в файле robots.txt, URL, обнаруженные на других страницах в Интернете, по-прежнему могут добавляться в индекс. В результате URL страницы, а также другие общедоступные сведения, например текст ссылок на сайт или заголовок из каталога Open Directory Project (www.dmoz.org), могут появиться в результатах поиска Google.
Однако даже если вы запретите поисковым роботам сканировать содержание сайта с помощью файла robots.txt, это не исключает, что Google обнаружит его другими способами и добавит в индекс.
А что дальше? Если доступ открыть, то он наткнется на мета-тег Noindex, запрещающий индексирования страницы, и на атрибут rel="canonical", который укажет на главный адрес страницы. Из последнего роботу гугла будет понятно, что данный документ не является главным и его не стоит брать в индекс. Вот и все дела. Ничего в индекс не попадет и никаких конфликтов с поисковым роботом Google не произойдет. И не придется потом избавляться от мусора в индексе.
Если же доступ будет закрыт, то велика вероятность, а скорее всего 100%, что адреса, найденные по таким ссылкам, googlebot проиндексирует. В этом случае придется от них избавляться, что уже занимает время ни одного дня, недели или даже месяца. Все зависит от количества мусора.
В общем, чтобы не произошло такого, стоит использовать правильный файл без лишних запретов + открытые всех подобных страниц для поисковой системы Google.
Можно конечно же просто закрыть все подобные ссылки скриптами или плагинами и сделать 301 редирект с дублированных страниц на главную, чтобы поискового робота сразу перекидывало на главный адрес, который он и будет индексировать, не обращая внимание на дубли.
Второй вариант является более жестким, так сказать более твердым, так как мы делаем некоторые манипуляции, закрывая весь мусор от поисковиков. Мы нее даем им самим разобраться в сложившейся ситуации. Ни малейшего шанса, что страницы по внутренним ссылкам попадут в индекс.
Лично я так и поступил. У меня все закрыто скриптом и редиректами.
Прежде, чем мы рассмотрим основу правильно файла robots, разберем основные директивы, чтобы на базовом уровне вы понимали, как составляется этот файл и как его можно будет доработать под свои нужды.
Основные директивы
Основными директивами файла robots являются:
- User-agent - директива, которая указывает, к какому роботу поисковых систем принадлежат правила, прописанные для запретов и разрешений. Если правила необходимо присвоить ко всем поисковым системам, то после директивы ставится звездочка *, если же стоит прописать правила к определенному роботу, например к Яндексу, то стоит прописать имя робота. В данном случае директива будет прописана так:
User-agent: Yandex
Название других роботов:
- Google — Googlebot;
- Яндекс — Yandex;
- Рамблер — StackRambler;
- Мэйл.ру — Mail.Ru.
- Disallow - директива призвана для запрета от индексации каталогов, страниц и документов. Чтобы запретить какой-то раздел, что после директивы прописать название каталога через правую наклонную черту. Например необходимо закрыть категорию "inter" на сайте, тогда необходимо будет прописать следующим образом:
Disallow: /inter
В этом случае будет запрещен от индексации каталог "inter", а также все, что находится внутри него;
- Allow - директива для разрешения частей сайта к индексации. Если нужно разрешить какую-то часть, то по аналогии с директивой Disallow прописывает название каталога или отдельной страницы. Например, если мне нужно открыть подраздел "pr" внутри каталога "inter", то правило будет прописано следующим образом:
Allow: /inter/pr
Хоть каталог "inter" мы и закрыли в предыдущем случае, подраздел "pr" будет индексироваться и все, что внутри него также будет доступно для поисковых роботов.
- Host - директива призвана, чтобы указать поисковым роботам основное зеркало сайта (с www или без).
Прописывать стоит только к Яндексу. Также необходимо указать главное зеркало сайта в панели веб-мастера Яндекс.
- Sitemap - директива призвана указать путь к карте сайта в формате XML. Стоит прописывать ко всем поисковым роботам. Достаточно указать только к директиве User-agent: *, которая ко всем роботам и действует.
Важно! После каждой директивы обязательно должен быть отступ в виде одного пробела.
Зная основные моменты в работе robots.txt и базовые принципы его составление, можно приступить к его сборке.
Составляем правильный файл
Вообще, идеальным вариантом было бы полностью открыть свой сайт к индексации и дать возможность поисковым роботам самим разобраться во всей ситуации. Но их алгоритмы не совершенны и они берут в индекс все, что можно только забрать в поисковую базу. А нам это ни к чему, так как будет куча дублированного контента в рамках сайта и куча мусорных страниц.
Чтобы такого не было, нужно составить такой файл, который будет разрешать к индексации только страницы самих статей, то есть контента и по надобности страницы, если они несут полезную информацию посетителю и поисковым системам.
Из пункта 2 сего материала вам стало понятно, что в файле не должно быть лишних запретов для Google, чтобы в индекс не полетели лишние адреса страниц. Это ни к чему. Яндекс же относится к данному файлу нормально и запреты воспринимает хорошо. Что укажем к запрету, то Яндекс и не будет индексировать.
На основе этого я сделал файл, который открывает весь сайт для поисковой системи Google (кроме служебных директорий самого движка WordPress) и закрывает все страницы дублей от Яндекса, Mail и других поисковиков.
Мой файл имеет довольно большой вид.
User-agent: Yandex
Disallow: /wp-admin
Disallow: /wp-includes
Disallow: /wp-login.php
Disallow: /wp-register.php
Disallow: /wp-content/plugins
Disallow: /wp-content/cache
Disallow: /xmlrpc.php
Disallow: */author/*
Disallow: */feed/
Disallow: */feed
Disallow: /?feed=
Disallow: */page/*
Disallow: */trackback/
Disallow: /search
Disallow: */tag/*
Disallow: /?wp-subscription-manager*
Allow: /wp-content/uploads/
Host: kostyakhmelev.ru
User-agent: Googlebot
Disallow: /wp-admin
Disallow: /wp-includes
Disallow: /wp-login.php
Disallow: /wp-register.php
Disallow: /wp-content/plugins
Disallow: /wp-content/cache
Allow: /wp-content/uploads/
User-agent: Mail.Ru
Disallow: /wp-admin
Disallow: /wp-includes
Disallow: /wp-login.php
Disallow: /wp-register.php
Disallow: /wp-content/plugins
Disallow: /wp-content/cache
Disallow: /xmlrpc.php
Disallow: */author/*
Disallow: */feed/
Disallow: */feed
Disallow: /?feed=
Disallow: */page/*
Disallow: */trackback/
Disallow: /search
Disallow: */tag/*
Disallow: /?wp-subscription-manager*
Allow: /wp-content/uploads/
User-agent: *
Disallow: /wp-admin
Disallow: /wp-includes
Disallow: /wp-login.php
Disallow: /wp-register.php
Disallow: /wp-content/plugins
Disallow: /wp-content/cache
Disallow: /xmlrpc.php
Disallow: /?wp-subscription-manager*
Allow: /wp-content/uploads/
Sitemap: //kostyakhmelev.ru/sitemap.xml
Sitemap: //kostyakhmelev.ru/sitemap.xml.gz
User-agent: Mediapartners-Google
Disallow:
User-agent: YaDirectBot
Disallow:
User-agent: Googlebot-Image
Allow: /wp-content/uploads/
User-agent: YandexImages
Allow: /wp-content/uploads/
[box style="1"]
Не забудьте изменить адрес моего домена на свой в директивах Host и Sitemap.
[/box]
Как видим, файл Robots.txt для wordpress вышел довольно большой. Это связано с тем, что правила я прописал к 3м основным роботам: Яндекс, Google и mail. К первым 2м обязательно нужно сделать. Также и к поисковому роботу mail не помешает, так как в последнее время поисковик довольно неплохо развивается и начинает приводить все больше и больше трафика.
Что касается самого содержимого файла, то для роботов Яндекса, Mail и для дериктивы, работающей со всеми роботами (User-agent: *), правила прописаны одни и те же. Запрет идет для всех основных моментов, связанных с появлением дублей в индексе.
Только к поисковому роботу Google я прописал отдельный вариант, который предполагает открытие всего содержимого сайта, кроме служебных папок самого движка. Почему именно так, я рассказывал выше. Нужно, чтобы Googlebot мог просканировать все страницы по внутренним ссылка и увидеть на них запреты в виде мета-тега robots со значением noindex, а также атрибут rel="canonical", что заставит его оставить дубли в покое.
Если же мы в файле роботс сделаем запрет, то робот не сможет увидеть этих данных (тегов) и, как я говорил ранее "на зло", возьмет адрес в индекс.
Также к каждому роботу я разрешил индексирование изображений (Allow: /wp-content/uploads/).
В конце файла я отдельно прописал разрешение индексации изображений для картиночных роботов Google и Яндекса. Вместе с этим разрешил весь сайт для роботов контекстной рекламы этих же поисковиков.
Интересным моментом является закрытие ссылки, которая создается плагином Subscribe to comments.
Если вы его используете, то в данном файле используйте запрет на ее индексирование, так как поисковый робот ее также обнаружит.
Для этого используется следующая строка:
Disallow: /?wp-subscription-manager*
Используя данный файл вы не будете бояться, что в индексе будет появляться дублированный контент, который образуется самим движком, а точнее его внутренними ссылками на страницах сайта. Яндекс все запреты сочтет за некую догму, а Google наткнется на запреты, когда зайдет на дубли, создаваемые движком.
Как я уже описывал ранее, то более продвинутыми настройками является скрытие таких ссылок, чтобы поисковые роботы даже не смогли их найти. К тому же это не только в 100% мере обезопасит нас сейчас, но и даст нам некую подстраховку на будущее, так как алгоритмы поисковых систем постоянно меняются и возможно, что запреты, которые работают сейчас, не будут работать через некоторое время.
Но тут также. Разработчики движка всегда идут в ногу со временем и учтут все новые изменения в работе ПС в совершенствовании wordpress. Исходя из этого, бояться в ближайшее время ничего не стоит.
В следующих статьях я буду описать процесс избавления от дублей страниц, которые могут появиться на ресурсе, а также способы скрытия опасных ссылок, создаваемых средствами WordPress, если вы все же решите обезопасить себя на все 100%. Мы ведь не знаем, как поведет себя поисковой робот? Может он начнет игнорировать запреты даже при наличии мета-тега Noindex и атрибута rel="canonical". В этом случае спасет скрытие опасных ссылок.
Итак, возможно, статья вышла довольно сложная для первого понимания, так как затронут не только вопрос составления самого файла, но и принципов работы поисковых роботов и того, что стоит сделать в идеале, что страшно, а что нет.
Если у вас имеются какие-то вопросы или неясности, то буду благодарен, если напишите об этом в комментариях, чтобы я как-то изменил данный материал для более отзывчивого восприятия другими пользователями.
На этом закончу этот пост. До скорых встреч!
С уважением, Константин Хмелев!