Правильный robots.txt для WordPress и применение мета тега robots

Правильный robots.txt для WordPress Привет, друзья. Кое-кто в комментариях сегодня меня попросил написать пост про правильный robots.txt для WordPress. Я как-то даже смутился, потому что не представляю себе, как можно сделать robots неправильным. Наверное, все же можно, раз вы просите.
Это я к чему…

Помните почти одноименный мой пост про правильный robots.txt для DLE, он собрал очень много отзывов (почти 300 комментариев), как раз там меня и попросили реализовать аналог для WordPress. Ну, окей, я сделал это, написание функции заняло всего 5 минут. Поэтому я хочу вас познакомить сегодня с правильным robots.txt для WP с моей точки зрения.
А закрывать неугодные страницы мы будем моим любимым способом – при помощи метатегов.

Идеальный robots.txt для WordPress будет примерно такой:

User-Agent: *
Allow: /wp-content/uploads
Disallow: /wp-
Host: site.ru
Sitemap: http://site.ru/sitemap.xml

Ничего удивительного, если вы читали пост про DLE, там роботс вообще из 4-х строк.

Страницы, которые необходимо исключить из индекса, мы будем закрывать метатегом <meta name="robots" content="noindex">. Чем это лучше и почему более правильно — я писал очень крутую статью и не перестаю ее рекомендовать к изучению — robots.txt vs. мета-тег robots.

Я не рекомендую использовать плагины, которые делают что-то подобное. То о чем я хочу рассказать – только хардкор, только PHP. Для реализации сегодняшних правок нам потребуется добавить всего одну функцию в файл functions.php нашей темы оформления.

Как обычно все гибко как конструктор – вы сам выбираете, что запретить от индексации, а что разрешить. Смотрим функцию:

/*** ДОБАВЛЯЕМ meta robots noindex,nofollow ДЛЯ СТРАНИЦ ***/
	function my_meta_noindex () {
		if (
			//is_archive() OR // Просмотр любых страниц архива - за месяц, за год, по категориям, по авторам, и т.д.
			//is_category() OR // Просмотр архива статей по категориям
			is_author() OR // Просмотр архива статей по авторам
			is_date() OR // Просмотр архива статей по любым датам
			//is_day() OR // Просмотр архива статей по дням
			//is_month() OR // Просмотр архива статей по месяцам
			//is_year() OR // Просмотр архива статей по годам
			is_tag() OR // Просмотр архива статей по тегам
			is_tax() OR // Просмотр архива статей по таксономии. Что это?
			//is_front_page() OR // Просмотр главной страницы сайта. То, что отображается на главной странице сайта http://site.ru/ См. в админке "Настройки" - "Чтение". Т.е. если в качестве главной выбрана статическая страница, то при просмотре главной страницы сайта и этой статической страницы, будет возвращено значение функции true.
			//is_home() OR // Главная страница блога. Та страница, на котороый выводятся последние записи блога. У меня, например это https://alaev.info/blog. См. в админке "Настройки" - "Чтение". Т.е. если в качестве страницы для вывода записей блога выбрана статическая страница, то при просмотре этой страницы, будет возвращено значение функции true.
			//is_singular() OR // Просмотр любых типов записей, включая одиночные посты, одиночные страницы, страницы прикрепленных файлов и т.д.
			//is_single() OR // Просмотр любого одиночного поста. Работает для любого типа постов, кроме страниц просмотра прикрепленных файлов и отдельных одиночных страниц
			//is_page() OR // Просмотр отдельной одиночной страницы (это то, что в разделе "Страницы" в админке)
			is_attachment() OR // Страницы просмотра прикрепленных файлов
			//is_paged() OR // Все и любые страницы пагинации
			is_search() // Страницы результатов поиска по сайту
		) {echo "".'<meta name="robots" content="noindex,nofollow" />'."\n";}
	}
	add_action('wp_head', 'my_meta_noindex', 3); // добавляем свой noindex,nofollow в head

Рекомендую добавить все это дело в самое начало файла functions.php, но если хотите, можете добавить в любое место.

К каждой строке кода есть понятное описание. Некоторые строки закомментированы (двойной слеш перед строкой), а какие-то нет – я примерно прикинул, какой должен быть оптимальный вариант, и сразу настроил код таким образом.

Чтобы активировать какое-то правило достаточно удалить двойной слеш, а чтобы запретить правило, соответственно, двойной слеш надо добавить. Все просто и понятно, не так ли?

Некоторые правила можно комбинировать, например, если надо закрыть только страницы пагинации при просмотре архивов (категории, теги, авторы и т.д.), а основные страницы пагинации (например, http://site.ru/page/2 и т.д.) оставить доступными для роботов, то правило будет такое: ( is_archive() && is_paged() ) OR

Чуть не забыл предупредить:
1. После закрытия страниц описанным выше способом, не забудьте удалить из robots.txt директивы, которые запрещают эти же страницы.
2. Некоторые плагины (например, All in One SEO, который установлен и у меня) тоже предлагают свои настройки индексации и добавляют мета-теги. Все это должно работать аналогичным путем. НО! Я рекомендую или отключить в плагине эти настройки, или не активировать их в моем коде. Мой способ гораздо более гибкий и настраиваемый, нежели плагины, потому выбор тут очевиден, не ошибитесь :)
3. Экспериментируйте, друзья, и найдите свой правильный robots.txt для WordPress! Но не забывайте проверять результаты своих экспериментов.

Ну все, дальше сами разберетесь :)

PS Все, что вы делаете по этой инструкции – вы делаете на свой страх и риск. И если вы вдруг полностью запретите индексацию сайта, то я тут не причем!

PPS По предыдущему опыту я вас предупреждаю — не смейте мне в комментариях выкладывать полностью содержание своего robots.txt и спрашивать правильный ли он и как дальше жить! Такие комменты я буду сразу удалять. Если хотите совета, то, в крайнем случае, давайте ссылку на ваш роботс.

Спасибо за внимание, задавайте вопросы, пишите комментарии, а главное отписывайтесь о работоспособности.

Александр «АлаичЪ» Алаев
Александр «АлаичЪ» Алаев

Вот уже 18 лет я профессионально занимаюсь созданием и продвижением сайтов и 13 лет с удовольствием пишу в любимый блог. Создал заслужившие доверие в seo-сообществе программы FastTrust и ComparseR и известный сервис для проверки траста сайтов CheckTrust.ru.

В 2014 основал веб-студию «АлаичЪ и Ко» в Краснодаре: 1 место в рейтинге агентств интернет-маркетинга (Рейтинг Рунета), 2 место в рейтинге SEO-компаний (CMSmagazine), 12 место в рейтинге известность бренда SEO-компаний в России (SeoNews).

Выступаю на профильных конференциях (All In Top, SEO Conference, SEMPRO, Baltic Digital Days). Веду канал в telegram про seo и бизнес. SEO-специалист года 2019 и 2020 (Sape).

Ерунда и баянЪ!Зачет! Плюсую!
+6

Профессиональный технический аудит и рекомендации по оптимизации вашего сайта.
Тот самый необходимый «фундамент» для успешного продвижения.

30 000 руб.

Комплексный подход к решению поставленных задач: достижение топ-10 и увеличение трафика на сайт. В стоимость уже включены полный технический аудит и оптимизация сайта.

45 000 руб.

У вас недостаточно знаний и нужны ответы на вопросы?
Интересует мнение эксперта или надо проверить подрядчика?
Вы задаете вопрос — я отвечаю!

5 000 руб./час

Проведу подробное исследование вашего сайта и основных конкурентов, опубликую материал на блоге для обсуждения и коллективного поиска новых идей.

70 000 руб.

Я начал запись своего обучающего курса по seo-продвижению.

В каждом видео я разбираю какую-то одну важную тему, и делаю это последовательно, в порядке, подходящем для изучения с нуля. Видео выкладываются раз в неделю – по средам. Я думаю, весь курс будет состоять из 50-70 роликов, так до конца еще далеко, а значит самое время подписаться и начать изучение вместе со мной.

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

Комментарии: 90 Написать комментарий
  1. Юрий (1 комм.)

    Еще для скрытия закладок, заметок и страниц можно использовать Advanced Category Excluder для WordPress. Правда, разработчики его уже 2 года не поддерживают

    Ответить
  2. SEOinSoul (5 комм.)

    Сань, а если например необходимо открыть только 1 страницу тега (при том, что все страницы тегов закрыты)...

    В таком случае какие телодвижения необходимы?

    Просто ситуация вполне имеет место быть и многим было бы полезно

    Ответить
    • АлаичЪ

      Уточни, пожалуйста, что есть «1 страницу» — это значит «одну страницу», или «первую страницу»? Я понял это так — надо запретить все страницы тегов, кроме одного. Если да, то вот такая строчка кода:

      ( is_tag() && !is_tag('tagname') ) OR

      Ответить
      • Александр Ка (1 комм.)

        Здравствуйте. А если надо открыть несколько тегов, то нужно прописать такую строчку? — ( is_tag () && !is_tag ('tagname', 'tagname_2') ). Т.е каждый следующий тэг через запитую и в кавычках, верно ли я понимаю? Спасибо.

        Ответить
        • АлаичЪ

          Наверное, надо сделать и проверить. У меня тегов нет, проверять поэтому негде. Проверьте и отпишитесь тут, как все же на самом деле правильно.

          Ответить
  3. drabadan (7 комм.)

    Оперативно. Спасибо большое, Сань. Дай бог тебе здоровья и всей твоей семье. Ты хороший человек. Сань извини за наглость. Читал темку на форуме про сборку dle, когда планируешь ее допилить и выложить?

    Ответить
  4. Костя (1 комм.)

    Спасибо за полезную информацию. Я даже не знал что он так влияет на индексацию (можно ставить что можно индекс., а что нет).

    Ответить
  5. Dmitriu (1 комм.)

    Первый раз слышу о Allow: /wp-content/uploads не разу не встречал для WP кто нибуть ставил себе эту строчку?

    Ответить
  6. Евгений (7 комм.)

    А у меня что-то вышла ошибочка Parse error: syntax error, unexpected ')' in /home/rasjk939/domains/oktoberfest-tmb.ru/public_html/wp-content/themes/promag/functions.php on line 25

    Ответить
    • АлаичЪ

      Код мой менял? Скопируй его полностью сюда, я скажу в чем проблема.

      Ответить
  7. Антон (2 комм.)

    Про то какой же "Правильный robots.txt для WordPress" узнать особо не удалось, зато удалось посмотреть на то, как была оптимизирована страница под "Правильный robots.txt для WordPress" и интересно ещё будет позырить где она будет ранжироваться ;) Удачи!

    Ответить
  8. Владимир (17 комм.)

    Еще считаю очень важным скрыть от индексации страницы результатов поиска.

    Злоумышленники могут подпортить репутацию сайта методом поиска не нормативных или порнушных слов по сайту и загнать такие старницы в индекс через пингеры.

    Надеюсь Александр подскажет как скрыть эти страницы от поисковиков.

    Ответить
    • АлаичЪ

      Ты прав. Поиск надо скрывать. Добавил соответствующий код, можно обновиться :)

      Ответить
  9. Иван (41 комм.)

    ...Слабовато, много пропущено, не ожидал!

    //is_archive () OR — закрывает ещё и категории, осторожно!

    Ответить
    • АлаичЪ

      Что пропущено, например?

      Про is_archive () четко в посте написано, что он закрывает. Только слепой и невнимательный пропустит мои подсказки.

      Ответить
      • Иван (41 комм.)

        Например, хотя бы is_feed! Ужасный робот!

        Ответить
  10. Андрей (1 комм.)

    Не знаю кто там надоумил написать такой пост, но ему спасибо. А Вам спасибо за статью. Как никак это как раз то, что я хотел поискать в сети. А тут на тебе, все что нужно и в одном месте. Спасибо большое

    Ответить
  11. Дмитрий (1 комм.)

    Объясни, Александр, как тогда относиться к надписи "The virtual robots.txt generated by WordPress is used. A real robots.txt file must NOT exist in the blog directory!" в настройках Google XML Sitemaps? На странице про плагины у тебя написано про этот: Резюме: Must Have!

    Ответить
    • АлаичЪ

      Просто создай файл robots.txt и залей его в корень на сервер, тогда виртуальный robots не будет использоваться.

      Ответить
  12. Александр (16 комм.)

    Добавил в вебмастер Google сайт с таким robots.txt, также отправил гуглу sitemap.xml, в котором отправлено 16 страниц. На что Гугл в "Сведениях об ошибках" пишет: Предупреждение "Файл Sitemap содержит URL, доступ к которым заблокирован в файле robots.txt", Количество проблем: 56. Хотя в sitemap добавлены только страницы разрешённые к индесации 16 страниц (главная, категории и посты).

    А на странице "Заблокированные URL" в robots.txt пишет, что заблокировано 24 url, хотя при проверке все нужные страницы разрешены к индесации, о каких 24 страницах идёт речь непонятно.

    АлаичЪ, подскажите пожалуйста, как это понимать, о каких проблемах идёт речь и как это всё исправить?

    Ответить
    • АлаичЪ

      Возможно, это временные проблемы или у Гугла остались устаревшие данные о robots.txt и sitemap.xml. Карту сайта можно удалить и заново добавить или просто в панели нажать "Отправить еще раз". Через неделю ошибки должны пропасть.

      PS Ваш сайт смотрел, ошибок быть не должно.

      Ответить
      • Александр (16 комм.)

        Спасибо, что уделили время и глянули сайт. Уже удалял sitemap и отправлял заново, всё равно через некоторое время появляется это предупреждение. Тоже кажется, что это у Google глюки, подожду, что Яндекс скажет...

        Ответить
  13. Валентина (10 комм.)

    Саша, спасибо Вам за статью! Очень полезная! Но у меня просьба, типа, как для блондинки, которая не знает php, как правильно в функцию написать исключение только одной страницы с адресом: http://site.ru/page/12

    is_page ()== 'http://site.ru/page/12' OR

    Или как? Кавычки одинарные или двойные?

    И еще, я что-то не сильно въехала, вы уж простите.

    Строку add_action ('wp_head', 'my_meta_noindex', 3); // добавляем свой noindex,nofollow в head

    добавляем в header.php там где все <meta name>?

    Ответить
    • Валентина (10 комм.)

      Ой,Александр! Жаль, что Вас нет... Я уже разобрала строку add_action ('wp_head', 'my_meta_noindex', 3); // добавляем свой noindex,nofollow в head. Ее надо вставить в заголовок только той страницы, которую надо заблокировать для поисков. но только у меня в теме в шаблоне для этой страницы заголовок общий для всех страниц. Как же мне отловить нужную страницу, а? А то я так же могу закрыть все страницы блога.

      Спасибо!

      Ответить
      • АлаичЪ

        add_action надо добавлять в functions.php, как это написано в после, и никак иначе!

        А что такое за страница http://site.ru/page/12 это страница навигации(пагинации) или это отдельно созданная страница с текстом или еще что?

        Ответить
        • Валентина (10 комм.)

          Саша, за функцию все понятно Вы в статье рассказал. Я так и сделала. А страница http://site.ru/page/12 — это страница на блоге с текстом, которую надо закрыть от поисковиков.

          Ответить
          • АлаичЪ

            В таком случае, в коде надо будет заменить:

            //is_page () OR

            на:

            is_page (12) OR

            Главное после этого проверить работоспособность.

            Ответить
            • Валентина (10 комм.)

              А как проверить?

              Ответить
              • Валентина (10 комм.)

                А проверяла просмотром кода страницы. Ведь правильно же?

                Ответить
                • АлаичЪ

                  Да, конечно, смотреть код страницы надо, если там есть нужный код с meta robots, то все сработало!

                  Ответить
  14. Валентина (10 комм.)

    И еще вопрос...Прошу прощения, я просто не понимаю, как функция my_meta_noindex () отработает, если она нигде не вызывается.

    Где будет вызов функции my_meta_noindex () ? Ее, как я понимаю, в каком-то *.php надо вызвать. И как я понимаю (если не права, то простите и подправьте), вызов функции должен быть в header.php в секции, где все meta name?

    Тогда команда вызова функции будет выглядеть так?

    <?php my_meta_noindex (); ?>

    К предыдущему комментарию.

    Страница, что я хочу закрыть, это одна страница, что в разделе "Страницы" в админке, и ее адрес http://site.ru/page/12 . И еще я знаю ее id. Может ее по id можно отловить? Если в секции meta name, когда нет еще title, id страницы уже определяется... Как все сложно для блондинки, Вы даже не представляете...

    Большущее Вам спасибо за эту статью! Я ее уже на память выучила, так она мне нужна.

    Ответить
    • Валентина (10 комм.)

      Все, Саш! У меня все получилось с блокированием страницы!!! Добавила функцию вызова в header.php.

      С П А С И Б О ВАМ!!!!!

      Дай Бог здоровья тому, кто надоумил Вас написать эту статью и Вам, за этот пост и функцию!!!

      Всех буду отправлять на Ваш блог, у кого будет такая необходимость. У меня нет ни тИЦ, ни PR, внешняя ссылка с моего блога Вам ничего не даст...

      Ответить
      • Валентина (10 комм.)

        Этот комент можете удалить, на Ваше смотрение. Изложила свои мытарства с исключением страницы из индексирования в посте. Так как контент я не ворую, то пришлось дать ссылку на Ваш блог. http://vdemchenko.com/sajt-svoimi-rukami/optimizacija/isklyuchenie-iz-indeksirovaniya-otdelnyih-stranits-postov-bloga/

        Я видела, что у Вас ссылки закрыты. Я понимаю, что у на разные уровни, но я просто благодарна Вам!

        Ответить
        • АлаичЪ

          Рад, что у вас все получилось и все работает! Если что — обращайтесь, всегда помогу :)

          Ответить
  15. Валентина (10 комм.)

    Саш, и можно еще вопрос? Не связан с темой поста, но, раз я у Вас на блоге прописалась уже который день :-)

    Какой у Вас стоит плагин для комментариев? Или Вы дорабатывали сами?

    Очень красиво оформлено!

    Ответить
    • АлаичЪ

      У меня никакой плагин комментариев не стоит, это все стандартное вордпрессовское. А чтобы они выглядели так, я просто пошаманил с css-стилями.

      Ответить
  16. Сергей (1 комм.)

    Спасибо! Очень полезная информация. Я сам столкнулся с проблемой, когда страницы сначала индексировались десятками и потом быстро вылетали из индекса. В основном — страницы авторизации, авторские, архивы по месяцам и т. д. Хочу попробовать ваш метод на сайте с движком LiveStreet

    Ответить
  17. Александр (24 комм.)

    Здравствуйте! Вот я например хочу дополнить Ваш код и запретить тоже не маловажные функции: это feed, trackback, comments, .php. Я так понимаю в код их надо вставлять с предлогом is_, правильно?

    Ответить
    • АлаичЪ

      Разве что только is_feed (), остальное нет.

      Ответить
      • Александр (24 комм.)

        Ок, спасибо. Ещё вопрос, в вашем коде где is_search () на конце нету OR, так и задуманно или Вы просто пропустили?

        Ещё важный момент: попробовал вставить в functions.php ваш код, сайт сразу же умер, всё стало белым)) Пришлось лезть через панель упр. на хостинге удалять код. В итоге попробовал вставить в разные места, результат один — сайт сразу отрубается. Помогите это исправить плиз. Сайт указал в урл.

        Ответить
        • Александр (24 комм.)

          Разобрался сам. как я понял OR на конце перечисления не ставится, а я ставил, поэтому и не работал сайт.

          Теперь у меня в конце вот так:

          is_search () OR — добавил OR

          is_feed () — оставил пустым

          Всё правильно сделал?

          Ответить
          • Валентина (10 комм.)

            Александр, а разве строки файла robots.txt

            Disallow: /trackback

            Disallow: */trackback

            Disallow: */*/trackback

            Disallow: */*/feed/*/

            Disallow: */feed

            не помогут Вам?

            поймите одну вещь. Лишний код в программе блога — это нагрузка на блог! Я так это понимаю.

            Ответить
            • Александр (24 комм.)

              Нет, не правильно понимаете! И нет, не помогут. Если бы в robots.txt всё от всех как надо бы закрывало, то зачем вообще мета тег роботс нужен тогда?)

              АлаичЪ, жду Вашего ответа.

              Ответить
              • АлаичЪ

                Да, в конце условия OR не ставится по понятным причинам.

                Ответить
  18. Александр (16 комм.)

    Здравствуйте, Александр. Подскажите пожалуйста, нужно ли закрывать от индексации страницу 404 Nothing found, если на ней показывается главная страница (в шаблон страницы 404.php полностью скопирован шаблон index.php), редиректа нет. При этом сервер выдаёт Код статуса HTTP: "404 Not Found".

    Ответить
    • АлаичЪ

      Нет, если сервер отдает 404 ошибку, т.к. робот все равно увидит только 404 и все.

      Ответить
  19. Валентина (1 комм.)

    Здравствуйте, Александр. Мой robots.txt составлен плохо, ничего не закрывает от индексации. В вебмастере яндекса пробовала подставлять разные варианты robots.txt, в том числе и ваш. Результат тот же. Не подскажете в чем причина? Мучаюсь с этим вопросом уже несколько дней. Читаю разные статьи, но решение не находится. Очень часто, те кому задаю вопросы или просто отписываются не в тему, или игнорируют. Подскажите, где нужно рыть, чтобы все начало работать, только делайте скидку на то, что знаний у меня чуть больше нуля.

    Ответить
    • АлаичЪ

      Просто сделайте такой же роботс, как указан у меня в посте и вставьте код в functions.php без каких-либо изменений. Это универсальный вариант, который подойдет для большинства задач.

      Ответить
  20. Дмитрий (7 комм.)

    Саш,как закрыть rss ленту твоим способом?

    Ответить
    • АлаичЪ

      is_feed () OR — эту строку добавить в середину моего кода. Но я не уверен, это только теория...

      Но я не считаю, что это нужно. Rss даже при желании никакого зля не нанесет.

      Ответить
  21. Сергей (6 комм.)

    АлаичЪ, позвольте полюбопытствовать, какие параметры у вас стоят сейчас? Я вот, к примеру, не нашел ни в robots.txt ни в исходном коде <meta name="robots" content="noindex,nofollow" /> Кроме этого, категории также не закрыты от индексации. Я никогда до этого не работал с wp, и не знаю где надо закрывать, а где нет. Не могли бы вы мне подсказать, как это делается сейчас?

    Ответить
    • АлаичЪ

      У меня закрыты данным способом только архивы (это строка в коде: is_date ()), просто других сущностный у меня на блоге и нет, ни тегов, ни авторов...

      Если не знаете как сделать лучше, используйте тот код, что в посте приведен, он самый универсальный.

      Ответить
      • Сергей (6 комм.)

        А зачем закрывать категории от индексации, когда они играют чютли не главную роль? Учитывая то, что я делаю сайт под DLE.

        Ответить
        • АлаичЪ

          Во-первых, откуда я знаю, зачем вам закрывать категории? А, во-вторых, тут речь про WordPress так-то...

          Ответить
  22. Батыр (1 комм.)

    У меня роботткс не работает нормально... Гугл всё равно индексирует теги. Поэтому я хочу добавить вашу функцию. А можно ли при этом всё равно оставить роботткс? И есть ли возможность с этой функцией оставить для индексации категории, но запретить подкатегории?

    Ответить
    • АлаичЪ

      Если не изменять robots.txt, то и ситуация не изменится, т.е. смысла не будет добавлять метатег.

      Закрыть только определенные категории можно такого вида строкой:

      is_category (array ( 1, 2, 3 )) OR

      т.е. это надо будет добавить в мой код вместо is_category () OR, а вместо 1,2,3 указать ID своих подкатегорий.

      Ответить
  23. d.j.starter (31 комм.)

    Здравствуйте, у меня со строчкой add_action ('wp_head', 'my_meta_noindex', 3); // добавляем свой noindex,nofollow в head ошибка, Fatal error: Call to undefined function add_action () in /var/www/v001241/data/www/site/wp-includes/functions.php on line 49

    удалил её получилось /*** ДОБАВЛЯЕМ meta robots noindex,nofollow ДЛЯ СТРАНИЦ ***/

    function my_meta_noindex () {

    if (

    //is_archive () OR // Просмотр любых страниц архива — за месяц, за год, по категориям, по авторам, и т.д.

    //is_category () OR // Просмотр архива статей по категориям

    is_author () OR // Просмотр архива статей по авторам

    is_date () OR // Просмотр архива статей по любым датам

    //is_day () OR // Просмотр архива статей по дням

    //is_month () OR // Просмотр архива статей по месяцам

    //is_year () OR // Просмотр архива статей по годам

    is_tag () OR // Просмотр архива статей по тегам

    is_tax () OR // Просмотр архива статей по таксономии. Что это?

    //is_front_page () OR // Просмотр главной страницы сайта. То, что отображается на главной странице сайта http://site.ru/ См. в админке "Настройки" — "Чтение". Т.е. если в качестве главной выбрана статическая страница, то при просмотре главной страницы сайта и этой статической страницы, будет возвращено значение функции true.

    //is_home () OR // Главная страница блога. Та страница, на котороый выводятся последние записи блога. У меня, например это https://alaev.info/blog. См. в админке "Настройки" — "Чтение". Т.е. если в качестве страницы для вывода записей блога выбрана статическая страница, то при просмотре этой страницы, будет возвращено значение функции true.

    //is_singular () OR // Просмотр любых типов записей, включая одиночные посты, одиночные страницы, страницы прикрепленных файлов и т.д.

    //is_single () OR // Просмотр любого одиночного поста. Работает для любого типа постов, кроме страниц просмотра прикрепленных файлов и отдельных одиночных страниц

    //is_page () OR // Просмотр отдельной одиночной страницы (это то, что в разделе "Страницы" в админке)

    is_attachment () OR // Страницы просмотра прикрепленных файлов

    //is_paged () OR // Все и любые страницы пагинации

    is_search () // Страницы результатов поиска по сайту

    ) {echo "".'<meta name="robots" content="noindex,nofollow" />'."\n";}

    }

    так работает, всё правильно cделал я?

    Ответить
    • АлаичЪ

      Ничего не понял... Если ты удалил функцию add_action, то соответственно ничего не будет работать, т.к. метатег и не добавится. Проблема, скорее всего, в версии WP, на старых версиях 2.7-2.9 точно работает. На других не проверял, но работать так-то должно.

      Ответить
  24. Михаил (7 комм.)

    АлаичЪ здравствуй. Объясни пожалуйста, вот я закрыл категории как было написано:

    is_category (array ( 1, 2, 3 )) OR

    Категории закрылись, а статьи этих категорий нет. А мне нужно, закрыть и статьи в данных категориях. Как это сделать?

    Ответить
  25. Максим (1 комм.)

    Использовать robots.txt удобно для закрытия от индексации большого количества статей или рубрик сайта. Рубрики или статьи можно постепенно открывать в robots.txt для лучшей индексации поисковиками.

    Ответить
  26. Леся (1 комм.)

    Спасибо за отличную статью! Скажите, пожалуйста, а как закрыть от индексации страницы плагина NextGEN: rumonsterhigh.ru/scaris-city-of-frights/nggallery/page/2/ — здесь при переходе по страницам галереи в посте генерируются страницы nggallery. Подскажите, как правильно их вписать в функцию?

    Ответить
    • АлаичЪ

      С данным плагином не знаком, потому не подскажу. Закройте через robots.txt

      Ответить
  27. Сергей (4 комм.)

    Всем привет!

    Огромное спасибо за материал! Давно сделал все в DLE, чем был очень удивлен, в хорошем смысле слова. Но ту решил реализовать все в WP 3.7.1 и возникла проблемка, а именно. Когда вставляю в файл вышеуказанный Вами код, то у меня в шапке сайта и админки, в одну строчку повторяется данный код.

    Скажите почему? Спасибо!

    Ответить
    • АлаичЪ

      Оно не должно показываться в админке. Но даже если и показывается, то это ни на что не повлияет.

      Я не работал с 3.x.x версиями WP, тестил на 2.8.x.

      Ответить
      • Сергей (2 комм.)

        Спасибо за ответ!

        Значит не судьба на данную версию движка установить данное сие чудо!

        Ответить
        • АлаичЪ

          Почему не судьба-то! Если на сайте все работает, а единственный косяк проявляется, как описано выше, появлением строки в админке, то все окей.

          Ответить
          • Сергей (2 комм.)

            Да дело в другом. Весь этот код, прописан в одну строку, а их получается 8 строк, отображается и в админке и на сайте (поверх)!

            Ответить
  28. ssabbass (1 комм.)

    Может кому пригодится: файл robots.txt можно подсмотреть на любом сайте, где таковой вообще имеется. Всем ведь известно, что он лежит в корне сайта, значит, забиваем URL главной и добавляем название файла. Например: https://alaev.info/robots.txt. Это к тому, что можно содрать содержимое файла у именитых и продвинутых сайтов, которые не имеют проблем с индексацией (или у конкурентов), слегка подшаманив его под собственные нужды.

    Ответить
  29. Виталий (2 комм.)

    Впечатлен! Спасибо за статью!

    Не могли бы Вы расшифровать директиву, что прописана в Вашем robots.txt:

    #Disallow: /*/$

    Я так понимаю, что символ $ означает избирательный запрет индексации, но вот символ # впереди Disallow и любой текст /*/ для меня загадка)

    Ну очень интересно что запрещает данная директива?

    Ответить
    • АлаичЪ

      Знак $ обозначает конец строки. А символ решетки # означает, что весь текст после этого символа является комментарием, т.е. не учитывается. Это значит, что директива Disallow: /*/$ не будет учтена поисковиками, они ее просто проигнорируют, когда будут читать файл robots.txt

      Ответить
  30. Виталий (2 комм.)

    Александр, может Вы сможете разъяснить, как понимать отношения Гугла к страницам URL которых содержат якоря такие как #comment-3274 и подобные.

    Я прочел в справке Гугла следующее...

    Цитата:

    "Хотя Google не будет сканировать или индексировать содержание страниц, заблокированных в файле robots.txt, мы можем по-прежнему индексировать URL-адреса, если мы найдем их на других страницах в Интернете. В результате Адрес страницы и, возможно, другие общедоступные сведения, такие как якорный текст в ссылках на сайте, или заголовок из проекта Open Directory ( www.dmoz.org ), может появляться в результатах поиска Google."

    Мета тега robots на таких страницах конечно нет.

    Вопрос, если опасность попадания таких страниц в индекс Google?

    Ответить
    • АлаичЪ

      Во-первых, якорь не индексируется и вообще не считается каким-то отдельным урл (в отличие от параметров, кстати), якорь просто указывает на конкретное место на странице. Якорей можно не бояться, в индекс не попадут никогда.

      А то, что вы написали про цитату из руководства для вебмастеров, то к якорям это не имеет отношения. Это во-вторых.

      А в третьих, если вам интересно во всем этом разобраться и понять отношение Google к файлу robots.txt, то прочитайте, пожалуйста, данный пост https://alaev.info/blog/post/3013

      Ответить
  31. Олег (6 комм.)

    Последнее время Яндекс стал индексировать страницы архива автора (author) и пагинации (page), хотя в коде самой страницы прописано noindex,nofollow в meta robots. В robots.txt запрета в этом случае нет. Прописывать теперь запрет отдельно для робота Яндекса?

    Ответить
  32. Ксенья Юрьевна (2 комм.)

    Здравствуйте, с новым годом вас! Я хотела уточнить момент №3 о вставке вызывающего кода в header. Получается 2 запрета в файле функции и в заголовке?

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

    Ответить
    • АлаичЪ

      Что такое "момент №3"?

      Советую делать или по одной статье или по другой, но не по двум сразу. Если делать, как описано у меня, то все прекрасно работает, я сам этим методом до сих пор пользуюсь. Работает с версий WordPress 2.х по 4.х

      Ответить
  33. Виталий (4 комм.)

    Александр, почитал Ваши статьи — очень дельные, особенно мне полезны были о title и стоп-словах.

    Вот возник у меня вопрос по robots.txt, может Вы встречались с такой проблемой и сможете мне помочь.

    В чем суть. Какой бы robots.txt не заливал в корневую папку, при просмотре через http://interior-designing.ru/robots.txt

    видна строчка Crawl-delay: 10, которой на самом деле нет. Эту строчку также видит веб-мастер гугл и постоянно выдает мне ПРЕДУПРЕЖДЕНИЕ. Как избавиться от этой строчки? Когда я полностью этот файл из корневой папки удаляю, там все равно виден robots.txt, правда урезанный и без этой строчки. Что за чудо такое и как его исправить.

    Сейчас файла нет вообще а корневой папке, но он все равно виден.

    Спасибо за помощь!

    Ответить
    • АлаичЪ

      Возможно у вас установлен плагин Google (XML) Sitemaps Generator for WordPress — Генератор XML-карты сайта для WordPress а в нем актирована опция "Add sitemap URL to the virtual robots.txt file."?

      Если так, то надо отключить ее и почистить кеш. Но и это может не помочь.

      А еще может быть установлен плагин All In One SEO Pack у которого в разделе "Другие модули" активирован генератор robots.txt.

      Это все надо проверить!

      Ответить
      • Виталий (4 комм.)

        Как Вы и говори отключении опции "Add sitemap URL to the virtual robots.txt file" в плагине Google (XML) Sitemaps Generator for WordPress не помогло.

        У меня нет плагин All In One SEO Pack, у меня установлен WordPress SEO by Yoast, может там внести какие-то изменения?

        Спасибо за помощь!

        Ответить
        • АлаичЪ

          Может быть и плагин WordPress SEO by Yoast виноват, я не знаю, не видел его никогда.

          Думаю, как вариант, поможет установка плагина https://wordpress.org/plugins/wp-robots-txt/

          Ответить
          • Виталий (4 комм.)

            Александр,

            я отключил плагин WordPress SEO by Yoast, также отключил опцию "Add sitemap URL to the virtual robots.txt file" в плагине Google (XML) Sitemaps Generator for WordPress и удалил файл robots.txt из корневой папки, но в если смотреть через RDS bar видна следующая информация:

            User-agent: *

            Disallow: /wp-admin/

            Что это может быть?

            Ответить
            • АлаичЪ

              Эта запись где-то в БД осталась. Поэтому я и рекомендовал использовать специальный плагин по ссылке в предыдущем комментарии.

              Ответить
              • Виталий (4 комм.)

                Спасибо, воспользуюсь Вашим советом, надеюсь, что он не сильно будет тормозит скорость сайта.

                Ответить
  34. Игорь (14 комм.)

    Привет

    эта конструкция все еще работает ? на вп 4.1 будет работать ? )

    и что значит включил выключил ? —

    //is_year () OR // Просмотр архива статей по годам

    is_tag () OR // Просмотр архива статей по тегам

    закоментировано значит выключил правильно ? или наоборот включил ?

    сорь если туплю, я не туплю я уточняю )))

    Ответить
  35. Андрей (1 комм.)

    Как запретить одну страницу/запись к индексации в вордпресс?

    спасибо.

    Ответить
  36. Михаил (1 комм.)

    Приветствую, Александр.

    Столкнулся с такой бедой,

    закрыл is_paged () OR // Все и любые страницы пагинации

    но на разрыв страницы он не действует, открыта и 1 я и 2 я и т.д страницы, все, что не есть хорошо, как их закрыть, кроме первой?

    Думаю, понятно объяснил?

    Ответить
  37. Александр (16 комм.)

    Здравствуйте.

    Такая ситуация. У меня URL ЧПУ вида – site.ru/post-name.html. Заметил, что в индекс стали попадать страницы вида:

    site.ru/name-news.html/123

    site.ru/name-news.html/223

    и т.д. В конце ссылки добавляется слеш и цифры.

    Если зайти на сайт и добавить к любой ссылке на пост слеш и цифры, то отображается эта же страница, причём и в rel=canonical будет тоже она, со слешем и цифрами. Если добавить слеш и буквы, будет – 404, как и положено. Причём заметил это не только на своих сайтах.

    Вопрос: Откуда берутся эти цифры, как от них избавиться, либо редиректом на правильный URL, либо закрыть в robots.txt или по другому?

    Ответить
  38. Александр (1 комм.)

    Привет, это еще актуально?

    Ответить
  39. Светлана (1 комм.)

    Вот в этой статье https://dampi.ru/pravilnyiy-robots-txt-dlya-sayta-na-wordpress автор утверждает о том, что если открыть uploads для всех ботов, то в индексе появляются загруженные PDF и прочие текстовые файлы. А в яндекс вебмастере, в отчете "Исключенные страницы" появляются сообщения об ошибке при индексировании картинок, мол содержимое не поддерживается. Вот и не знаю кому верить...

    Ответить