В этой статье пример оптимального, на мой взгляд, кода для файла robots.txt под WordPress, который вы можете использовать в своих сайтах.
Для начала, вспомним зачем нужен robots.txt — файл robots.txt нужен исключительно для поисковых роботов, чтобы «сказать» им какие разделы/страницы сайта посещать, а какие посещать не нужно. Страницы, которые закрыты от посещения не будут попадать в индекс поисковиков (Yandex, Google и т.д.).
Вариант 1: оптимальный код robots.txt для WordPress
User-agent: * Disallow: /cgi-bin # классика… Disallow: /? # все параметры запроса на главной Disallow: /wp- # все файлы WP: /wp-json/, /wp-includes, /wp-content/plugins Disallow: *?s= # поиск Disallow: *&s= # поиск Disallow: /search # поиск Disallow: /author/ # архив автора Disallow: */embed # все встраивания Disallow: */page/ # все виды пагинации Allow: */uploads # открываем uploads Allow: /*/*.js # внутри /wp- (/*/ — для приоритета) Allow: /*/*.css # внутри /wp- (/*/ — для приоритета) Allow: /wp-*.png # картинки в плагинах, cache папке и т.д. Allow: /wp-*.jpg # картинки в плагинах, cache папке и т.д. Allow: /wp-*.jpeg # картинки в плагинах, cache папке и т.д. Allow: /wp-*.gif # картинки в плагинах, cache папке и т.д. Allow: /wp-*.svg # картинки в плагинах, cache папке и т.д. Allow: /wp-*.pdf # файлы в плагинах, cache папке и т.д. Allow: /wp-admin/admin-ajax.php #Disallow: /wp/ # когда WP установлен в подкаталог wp Sitemap: Sitemap: # еще один файл #Sitemap: # сжатая версия (.gz) # Версия кода: 1.1 # Не забудьте поменять `site.ru` на ваш сайт.
Разбор кода:
- В строке User-agent: * мы указываем, что все нижеприведенные правила будут работать для всех поисковых роботов *. Если нужно, чтобы эти правила работали только для одного, конкретного робота, то вместо * указываем имя робота (User-agent: Yandex, User-agent: Googlebot).
- В строке Allow: */uploads мы намеренно разрешаем индексировать страницы, в которых встречается /uploads. Это правило обязательно, т.к. выше мы запрещаем индексировать страницы начинающихся с /wp-, а /wp- входит в /wp-content/uploads. Поэтому, чтобы перебить правило Disallow: /wp- нужна строчка Allow: */uploads, ведь по ссылкам типа /wp-content/uploads/… у нас могут лежать картинки, которые должны индексироваться, так же там могут лежать какие-то загруженные файлы, которые незачем скрывать. Allow: может быть «до» или «после» Disallow:.
- Остальные строчки запрещают роботам «ходить» по ссылкам, которые начинаются с:
- Disallow: /cgi-bin — закрывает каталог скриптов на сервере
Disallow: ?s= или Disallow: *?s= — закрыавет страницы поиска
Читайте также: Работа для пенсионеров в интернете на дому без вложений
- Disallow: */page/ — закрывает все виды пагинации
- Правило Sitemap: указывает роботу на файл с картой сайта в формате XML. Если у вас на сайте есть такой файл, то пропишите полный путь к нему. Таких файлов может быть несколько, тогда указываем путь к каждому отдельно.
- В строке Host: site.ru мы указываем главное зеркало сайта. Если у сайта существуют зеркала (копии сайта на других доменах), то чтобы Яндекс индексировал всех их одинаково, нужно указывать главное зеркало. Директива Host: понимает только Яндекс, Google не понимает! Если сайт работает под https протоколом, то его обязательно нужно указать в Host: Host: https://example.com
Из документации Яндекса: «Host — независимая директива и работает в любом месте файла (межсекционная)». Поэтому её ставим наверх или в самый конец файла, через пустую строку.
Не рекомендуется исключать фиды: Disallow: */feed
Потому что наличие открытых фидов требуется, например, для Яндекс Дзен, когда нужно подключить сайт к каналу (спасибо комментатору «Цифровой»). Возможно открытые фиды нужны где-то еще.
Фиды имеют свой формат в заголовках ответа, благодаря которому поисковики понимают что это не HTML страница, а фид и, очевидно, обрабатывают его как-то иначе.
Директива Host для Яндекса больше не нужна
Яндекс полностью отказывается от директивы Host, её заменил 301 редирект. Host можно смело удалять из robots.txt. Однако важно, чтобы на всех зеркалах сайта стоял 301 редирект на главный сайт (главное зеркало).
меню
Это важно: сортировка правил перед обработкой
Yandex и Google обрабатывает директивы Allow и Disallow не по порядку в котором они указаны, а сначала сортирует их от короткого правила к длинному, а затем обрабатывает последнее подходящее правило:
User-agent: * Allow: */uploads Disallow: /wp-
будет прочитана как:
User-agent: * Disallow: /wp- Allow: */uploads
Таким образом, если проверяется ссылка вида: /wp-content/uploads/file.jpg, правило Disallow: /wp- ссылку запретит, а следующее правило Allow: */uploads её разрешит и ссылка будет доступна для сканирования.
Чтобы быстро понять и применять особенность сортировки, запомните такое правило: «чем длиннее правило в robots.txt, тем больший приоритет оно имеет. Если длина правил одинаковая, то приоритет отдается директиве Allow.»
меню
Дополнение
Интересен файл robots.txt от seogio.ru с очень подробными пояснениями.
User-agent: * # общие правила для роботов, кроме Яндекса и Google, # т.к. для них правила ниже Disallow: /cgi-bin # папка на хостинге Disallow: /? # все параметры запроса на главной Disallow: /wp- # все файлы WP: /wp-json/, /wp-includes, /wp-content/plugins Disallow: /wp/ # если есть подкаталог /wp/, где установлена CMS (если нет, # правило можно удалить) Disallow: *?s= # поиск Disallow: *&s= # поиск Disallow: /search/ # поиск Disallow: /author/ # архив автора Disallow: /users/ # архив авторов Disallow: */trackback # трекбеки, уведомления в комментариях о появлении открытой # ссылки на статью Disallow: */feed # все фиды Disallow: */rss # rss фид Disallow: */embed # все встраивания Disallow: */wlwmanifest.xml # xml-файл манифеста Windows Live Writer (если не используете, # правило можно удалить) Disallow: /xmlrpc.php # файл WordPress API Disallow: *utm*= # ссылки с utm-метками Disallow: *openstat= # ссылки с метками openstat Allow: */uploads # открываем папку с файлами uploads User-agent: GoogleBot # правила для Google (комментарии не дублирую) Disallow: /cgi-bin Disallow: /? Disallow: /wp- Disallow: /wp/ Disallow: *?s= Disallow: *&s= Disallow: /search/ Disallow: /author/ Disallow: /users/ Disallow: */trackback Disallow: */feed Disallow: */rss Disallow: */embed Disallow: */wlwmanifest.xml Disallow: /xmlrpc.php Disallow: *utm*= Disallow: *openstat= Allow: */uploads Allow: /*/*.js # открываем js-скрипты внутри /wp- (/*/ — для приоритета) Allow: /*/*.css # открываем css-файлы внутри /wp- (/*/ — для приоритета) Allow: /wp-*.png # картинки в плагинах, cache папке и т.д. Allow: /wp-*.jpg # картинки в плагинах, cache папке и т.д. Allow: /wp-*.jpeg # картинки в плагинах, cache папке и т.д. Allow: /wp-*.gif # картинки в плагинах, cache папке и т.д. Allow: /wp-admin/admin-ajax.php # используется плагинами, чтобы не блокировать JS и CSS User-agent: Yandex # правила для Яндекса (комментарии не дублирую) Disallow: /cgi-bin Disallow: /? Disallow: /wp- Disallow: /wp/ Disallow: *?s= Disallow: *&s= Disallow: /search/ Disallow: /author/ Disallow: /users/ Disallow: */trackback Disallow: */feed Disallow: */rss Disallow: */embed Disallow: */wlwmanifest.xml Disallow: /xmlrpc.php Allow: */uploads Allow: /*/*.js Allow: /*/*.css Allow: /wp-*.png Allow: /wp-*.jpg Allow: /wp-*.jpeg Allow: /wp-*.gif Allow: /wp-admin/admin-ajax.php Clean-Param: utm_source&utm_medium&utm_campaign # Яндекс рекомендует не закрывать # от индексирования, а удалять параметры меток, # Google такие правила не поддерживает Clean-Param: openstat # аналогично # Укажите один или несколько файлов Sitemap (дублировать для каждого User-agent # не нужно). Google XML Sitemap создает 2 карты сайта, как в примере ниже. Sitemap: https://site.ru/sitemap.xml Sitemap: https://site.ru/sitemap.xml.gz # Укажите главное зеркало сайта, как в примере ниже (с WWW / без WWW, если HTTPS # то пишем протокол, если нужно указать порт, указываем). Команда стала необязательной. Ранее Host понимал # Яндекс и Mail.RU. Теперь все основные поисковые системы команду Host не учитывают. Host: www.site.ru
Вариант 2: стандартный robots.txt для WordPress
Не знаю кто как, а я за первый вариант! Потому что он логичнее — не надо полностью дублировать секцию ради того, чтобы указать директиву Host для Яндекса, которая является межсекционной (понимается роботом в любом месте шаблона, без указания к какому роботу она относится). Что касается нестандартной директивы Allow, то она работает для Яндекса и Гугла и если она не откроет папку uploads для других роботов, которые её не понимают, то в 99% ничего опасного это за собой не повлечет. Я пока не заметил что первый robots работает не так как нужно.
Вышеприведенный код немного не корректный. Спасибо комментатору «robots.txt» за указание на некорректность, правда в чем она заключалась пришлось разбираться самому. И вот к чему я пришел (могу ошибаться):
- Некоторые роботы (не Яндекса и Гугла) — не понимают более 2 директив: User-agent: и Disallow:
- Директиву Яндекса Host: нужно использовать после Disallow:, потому что некоторые роботы (не Яндекса и Гугла), могут не понять её и вообще забраковать robots.txt. Cамому же Яндексу, судя по документации, абсолютно все равно где и как использовать Host:, хоть вообще создавай robots.txt с одной только строчкой Host: www.site.ru, для того, чтобы склеить все зеркала сайта.
3. Sitemap: межсекционная директива для Яндекса и Google и видимо для многих других роботов тоже, поэтому её пишем в конце через пустую строку и она будет работать для всех роботов сразу.
Читайте также: Что такое транскрибация – ее виды и задачи, способы оформления и как на ней заработать?
На основе этих поправок, корректный код должен выглядеть так:
User-agent: Yandex Disallow: /wp-admin Disallow: /wp-includes Disallow: /wp-content/plugins Disallow: /wp-json/ Disallow: /wp-login.php Disallow: /wp-register.php Disallow: */embed Disallow: */page/ Disallow: /cgi-bin Disallow: *?s= Allow: /wp-admin/admin-ajax.php Host: site.ru User-agent: * Disallow: /wp-admin Disallow: /wp-includes Disallow: /wp-content/plugins Disallow: /wp-json/ Disallow: /wp-login.php Disallow: /wp-register.php Disallow: */embed Disallow: */page/ Disallow: /cgi-bin Disallow: *?s= Allow: /wp-admin/admin-ajax.php Sitemap: меню
Как создать файл robots.txt для WordPress (3 способа)
Как видно из вышесказанного, файл robots.txt является не обязательным, но очень полезным элементом сайта. Если такого файла среди документации ресурса нет, желательно как можно быстрее заняться его созданием. Получить robots.txt можно при помощи плагина или путем применения FTP клиента. Ниже описаны два варианта применения плагинов и способ создания файла через FTP соединение.
Использование плагина Yoast SEO
Yoast SEO – это популярный многофункциональный плагин WordPress. В нем предусмотрены все инструменты для оптимизации SEO. С помощью Yoast SEO настраиваются мета теги, создаются «хлебные крошки», карты сайта, и файлы robots.txt. Изначально плагин настроен на сохранение безопасности сайта. Все, что не касается безопасности, в том числе и запреты robots.txt нужно настраивать самостоятельно.
Удобство плагина Yoast SEO ив том, что он обеспечивает доступ к файлу robots.txt (как и к другим файлам корневой папки) непосредственно из панели управления вордпресс. Чтобы найти нужные папки следует зайти в «инструменты», в раздел «редактор файлов». Здесь можно сразу открыть файл и внести необходимые изменения. Чтобы директивы заработали, нужно обязательно сохранить изменения как при любых корректировках кодов. Если файл robots.txt на сайте отсутствует, на месте, где должна лежать папка с ним, будет располагаться подсказка, с предложением создать этот файл при помощи специальной кнопки.
Применение плагина All in One SEO Pack
Это другой плагин для оптимизации SEO. Он тоже достаточно популярен среди пользователей платформы WP. В нем также предусмотрено множество полезных и удобных инструментов. Некоторых функций, имеющихся в Yoast SEO плагину All in One SEO Pack недостает. Поэтому, если Yoast SEO выбирают для максимально тонких настроек, то All in One SEO Pack предпочитают те веб-мастера, для которых важнее скорость работы и легковесность расширения.
Создать файл robots.txt на сайте, управляемом при помощи All in One SEO Pack также просто, как и в предыдущем варианте. Сначала нужно его установить, потом открыть в консоли вордпресс, разделе «управление модулями». Панель управления плагина проста и интуитивно понятна. В ней отображаются все функции, которые можно устанавливать и настраивать данным расширением. Здесь же представлена и вкладка файла robots.txt. Для создания файла нужно нажать кнопку «активировать». После создания файла его можно сразу открыть и внести все директивы. Осуществляется это очень просто. Для добавления нового правила есть специальная кнопка. При необходимости можно удалить все содержимое раздела. Плагин предоставляет целый ряд предустановленных правил. Если какие-то из них не нужны, их просто деактивируют. Потом можно опять включать неактивные предустановленные правила.
Создание и загрузка файла robots.txt для WordPress по FTP
Этот способ подходит для дизайнеров, которые предпочитают не нагружать сайты расширениями и вносить необходимые дополнения самостоятельно. В данном варианте следует сначала создать файл при помощи текстового редактора. Например в Notepad++. При написании кода нужно учитывать приведенные выше принципы последовательности. Созданный документ надо сохранить в памяти компьютера с текстовым расширением. Далее открывается программа – FTP клиент, осуществляется подключение к сайту.
Подключившись к сайту нужно зайти в каталог public_html. В него и загружается новый файл robots.txt из компьютера. Таким образом он оказывается в нужном месте непосредственно на сервере. Загрузка может быть выполнена путем перетаскивания документа или с использованием загрузчика сервера через навигацию. Весь процесс займет несколько минут. Здесь главное правильно составить документ. Можно найти готовый вариант подробно прописанного файла в интернете, например, на специализированном форуме.
Дописываем под себя
Если вам нужно запретить еще какие-либо страницы или группы страниц, можете внизу добавить правило (директиву) Disallow:. Например, нам нужно закрыть от индексации все записи в категории news, тогда перед Sitemap: добавляем правило:
Disallow: /news
Оно запретить роботам ходить по подобным ссылками:
Если нужно закрыть любые вхождения /news, то пишем:
Disallow: */news
Читайте также: Как Посмотреть Статистику Ключевых Слов Google Adwords | 2 Способа
Закроет:
Подробнее изучить директивы robots.txt вы можете на странице помощи Яндекса (но имейте ввиду, что не все правила, которые описаны там, работают для Google).
меню
Проверка robots.txt и документация
Проверить правильно ли работают прописанные правила можно по следующим ссылкам:
- Яндекс: https://webmaster.yandex.ru/robots.xml.
- В Google это делается в Search console. Нужна авторизация и наличия сайта в панели веб-мастера…
- Сервис для создания файла robots.txt: https://pr-cy.ru/robots/
- Сервис для создания и проверки robots.txt: https://seolib.ru/tools/generate/robots/
- Документация от Яндекса.
- Документация от google
меню
Проверка роботс тхт Яндексом и Google — правильно ли работает файл?
Рекомендуется протестировать файл robots.txt, чтобы проверить, что он работает именно таким образом, как ожидается от помещенных в него инструкций. Перед анализом, убедитесь, что сайт зарегистрирован в инструментах веб-мастера, которые предлагаются поисковиками Google и Яндекс.
Для проверки Яндексом перейдите в кабинет веб-мастера по ссылке https://webmaster.yandex.ru. Выберите меню «Инструменты» и подменю «Анализ robots.txt». Чтобы проверить файл в Google пройдите по ссылке https://www.google.com/webmasters/tools. В меню «Сканирование» нужно выбрать пункт «Инструмент проверки файла robots.txt».
Обе системы позволяют отправить файл robots.txt на проверку, после чего выдают результаты анализа и сообщения об ошибках, если они были обнаружены.
Я спросил у Яндекса…
Задал вопрос в тех. поддержку Яндекса насчет межсекционного использования директив Host и Sitemap:
Вопрос:
Здравствуйте! Пишу статью насчет robots.txt на своем блоге. Хотелось бы получить ответ на такой вопрос (в документации я не нашел однозначного «да»):
Если мне нужно склеить все зеркала и для этого я использую директиву Host в самом начале фала robots.txt:
Host: site.ru User-agent: * Disallow: /asd
Будет ли в данном примере правильно работать Host: site.ru? Будет ли она указывать роботам что site.ru это основное зеркало. Т.е. эту директиву я использую не в секции, а отдельно (в начале файла) без указания к какому User-agent она относится.
Также хотел узнать, обязательно ли директиву Sitemap нужно использовать внутри секции или можно использовать за пределами: например, через пустую строчку, после секции?
User-agent: Yandex Disallow: /asd User-agent: * Disallow: /asd Sitemap:
Поймет ли робот в данном примере директиву Sitemap?
Надеюсь получить от вас ответ, который поставит жирную точку в моих сомнениях.
Спасибо!
Ответ:
Здравствуйте!
Директивы Host и Sitemap являются межсекционными, поэтому будут использоваться роботом вне зависимости от места в файле robots.txt, где они указаны.
— С уважением, Платон Щукин Служба поддержки Яндекса
меню
Вывод
Если вы думаете, что все настройки WordPress находятся в административной панели, то вы глубоко ошибаетесь. Существует много файлов, отвечающих за те или иные функции. Внося изменения в них или перенося их в другое место, вы можете тем самым редактировать определенные настройки в работе своего шаблона и сайта.
Все эти скрытые файлы, несмотря на свой маленький размер, могут выполнять большую роль. Поэтому очень важно, во-первых, чтоб они все-таки в принципе существовали, как например, файл robots.txt
Читайте также: Что такое копирайтинг — подробное руководство для новичков по заработку на копирайтинге + фишки и секреты от профессионала
или файл
.htaccess.
А, во-вторых, были на своем месте.
В противном случае, ваш сайт будет работать, но избежать возникновения вопросов, связанных с работой сайта, все равно не получится. Рано или поздно, а обычно в самое неподходящее время, выдаются ошибки, основательно влияющие на работу сайта.
Динамический robots.txt
В WordPress запрос на файл robots.txt обрабатывается отдельно и совсем не обязательно физически создавать файл robots.txt в корне сайта, более того это не рекомендуется, потому что при таком подходе плагинам будет очень сложно изменить этот файл, а это иногда нужно.
О том как работает динамическое создание файла robots.txt читайте в описании функции do_robots(), а ниже я приведу пример как можно изменить содержание этого файла, налету, через хук do_robotstxt.
Для этого добавьте следующий код в файл functions.php:
add_action( ‘do_robotstxt’, ‘my_robotstxt’ ); function my_robotstxt(){ $lines = [ ‘User-agent: *’, ‘Disallow: /wp-admin/’, ‘Disallow: /wp-includes/’, », ]; echo implode( «rn», $lines ); die; // обрываем работу PHP }
Теперь, пройдя по ссылке мы получим такой текст:
User-agent: * Disallow: /wp-admin/ Disallow: /wp-includes/ меню
Что такое файл robots.txt для WordPress и зачем он нужен
В файлах robots.txt указываются рекомендации для поисковиков относительно поведения при индексации. В них можно установить, с какой периодичностью нужно проверять страницы, и какие их них следует обходить. Выше были перечислены разделы, которые желательно убрать из процесса индексации ввиду конфиденциальности содержащейся в них информации. Но есть еще и такие разделы, которые не представляют пользы для индексации. Например, скрипты, выводящие всплывающие окна или баннеры не информативны с точки зрения поисковой системы. Но если не задать их обход, они будут скачиваться при проверке, как и другие страницы. Чем больше информации для скачивания, тем больше нагрузка на сайт и тем медленнее осуществляется сам процесс индексации.
Стоит отметить, что не все директивы, указанные файлами robots.txt обязательны для выполнения. Некоторые из них роботы игнорируют. Некоторые являются обязательными для выполнения роботами одних систем, и при этом игнорируются другими поисковиками. Кроме того, при неправильном использовании robots.txt сайт может полностью стать невидимым для роботов, и в результате исчезнуть из всех поисковых систем. Все это означает, что применять файлы robots.txt нужно только при тщательном изучении всех правил и нюансов их составления.
Crawl-delay — таймаут для сумасшедших роботов (с 2018 года не учитывается)
Яндекс
ВАЖНО! Яндекс перестал учитывать Crawl-delay:
Проанализировав письма за последние два года в нашу поддержку по вопросам индексирования, мы выяснили, что одной из основных причин медленного скачивания документов является неправильно настроенная директива Crawl-delay в robots.txt […] Для того чтобы владельцам сайтов не пришлось больше об этом беспокоиться и чтобы все действительно нужные страницы сайтов появлялись и обновлялись в поиске быстро, мы решили отказаться от учёта директивы Crawl-delay.
Когда робот Яндекса сканирует сайт как сумасшедший и это создает излишнюю нагрузку на сервер. Робота можно попросить «поубавить обороты».
Для этого нужно использовать директиву Crawl-delay. Она указывает время в секундах, которое робот должен простаивать (ждать) для сканирования каждой следующей страницы сайта.
Для совместимости с роботами, которые плохо следуют стандарту robots.txt, Crawl-delay нужно указывать в группе (в секции User-Agent) сразу после Disallow и Allow
Робот Яндекса понимает дробные значения, например, 0.5 (пол секунды). Это не гарантирует, что поисковый робот будет заходить на ваш сайт каждые полсекунды, но позволяет ускорить обход сайта.
Примеры:
User-agent: Yandex Disallow: /wp-admin Disallow: /wp-includes Crawl-delay: 1.5 # таймаут в 1.5 секунды User-agent: * Disallow: /wp-admin Disallow: /wp-includes Allow: /wp-*.gif Crawl-delay: 2 # таймаут в 2 секунды
Пример Robots.txt: disallow и allow, host и sitemap
Как было сказано выше, с помощью robots txt можно как запретить индексацию сайта, так и разрешить всё.
Disallow
Данной командой вы закроете весь сайт от индексации поисковых систем. Выглядеть это будет так:
User-agent: * Disallow: /
Таким образом, вы полностью закроете сайт от индексации. Для чего это делать? Ну, например, как я рассказывал ранее, в статье про стратегию наполнения нового сайта. Изначально вы добавляете файл robots.txt в корень сайта и прописываете код, который указан выше.
Артём Высоков
Автор блога о SEO и заработке на сайтах — Vysokoff.ru. Продвигаю информационные и коммерческие сайты с 2013 года.
Задать вопрос
Добавляете необходимое количество статей, а затем, скачав мой идеальный robots txt, открываете от индексации только необходимые разделы на сайте или блоге.
Чтобы в robots txt разрешить всё, вам необходимо написать в файле следующее:
User-agent: * Disallow:
Т.е. убрав слэш, мы показываем поисковым системам, что можно индексировать абсолютно всё.
Кроме того, если вам необходимо закрыть какую-то конкретную директорию или статью от индексации, необходимо просто дописывать после слэша путь до них:
Disallow: /page.htm
Disallow: /dir/page2.htm
Allow
Данный параметр наоборот открывает для индексации какую-то конкретную страницу из закрытой Disallow директории. Пример:
Disallow: /dir/
Allow: /dir/ page2.htm
Прописываем Host и карту сайта
В конце файла robots txt вам необходимо прописать два параметра host и sitemap, делается это так:
Host: www.site.ru
Sitemap: www.site.ru/sitemap.xml
Host указывается для определения правильного зеркала сайта, а второе помогает роботу узнать, где находится карта сайта.