WordPress как на ладони
wordpress jino

Настройки файла robots.txt: закрыть от индексации рубрики, метки, страницы пагинации

Ситуация, оптимизирую (контент, картинки + мета данные: title, description и keywords по средствам плагина одного) определенные категории и метки сайта (их много посему постепенно все делаю).

В файле robots.txt запретил индексировать метки, классика: Disallow: /tag/ естественно разрешил те которые облагорожены пример: Allow: /tag/videokarty-asus. Казалось все норм, однако у меток тоже есть страницы и в индекс попала несколько вот такого формата: домен/tag/videokarty-asus/page/1. Как их закрыть именно в robots.txt самым простым способом?

Пока применил для всех открытых меток такое правило: Disallow: /tag/videokarty-asus/page/ Вот только у меня 16 меток открыты уже и под каждую писать такое правило очень громоздко плюс постоянно подходят новые оптимизированные.

Плюс еще вопрос.

Стоит у меня в файле function.php такой код:

/*** ДОБАВЛЯЕМ meta robots noindex,nofollow ДЛЯ СТРАНИЦ ***/
   function my_meta_noindex () {
	  if (
		 is_paged() // Все и любые страницы пагинации
	  ) {echo "".'<meta name="robots" content="noindex,nofollow" />'."\n";}
   }

add_action('wp_head', 'my_meta_noindex', 3); // добавляем свой noindex,nofol

Кто им пользуется и если в нем потребность?

2
3 года назад
  • 0
    Kama5080

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

    Disallow: */page/

    Если нужно только для меток, то можно так

    Disallow: /tag/*/page/

    Метатеги noindex

    Что касается метатегов noindex, то они имеют больший приоритет над правилами в robots.txt.

    Тот код который вы выложили, чтобы закрыть страницы пагинации - не лучшее решение. Я рекомендую страницы пагинации закрыть через robots.txt и удалить ваш код.

    А вот что касается закрытия и открытия рубрик и меток с описанием, то будет удобнее использовать именно метатег, потому что можно программно проверить: если у рубрики есть описание, то открыть для индексации, если описания нет, то закрыть. Так вам не нужно будет постоянно менять robots.txt и совать туда такие правила: Allow: /tag/videokarty-asus

    Для этого вам в robots нужно просто закрыть от индексации страницы пагинации Disallow: */page/. А другие правила касательно меток и рубрик удалить, т.е. метки и рубрики оставить открытые, но закрыть их в метатегах с проверкой на наличие описания. Проверять описание будем функцией term_description():

    // получаем объект запроса
    $qobject = get_queried_object();
    // если это элемент таксономии (метка рубрика) и у него нет описания
    // выводим закрывающий от индексации метатег
    if( isset( $qobject->taxonomy ) && ! term_description( $qobject->term_id, $qobject->taxonomy ) ){
    	echo '<meta name="robots" content="noindex,nofollow" />';
    }

    Этот код нужно разместить в head часть документа (файл темы header.php). И он должен выводить закрывающий метатег для всех таксономий у которых нет описания.

    Так у вас все получится автоматически, без постоянного редактирования robots.txt.

    П.С. У вас код в вопросе испортился поправьте пожалуйста!

    П.П.С Эту статью мою прочитайте, там все подробно про robots.txt.

    BigDimoz 3 года назад

    Гениально! Пока "вкурил" как говорится, потом осенило, точно, ведь можно проверять наличие дискрипшин на странице. Однако захожу на: /tag/materinskie-platy-asrock/page/2 смотрю исходный код и вижу там то есть в данном случае пропустит функция эту страницу.

    Выводит описания и ключевые слова плагин для облагораживания рубрик и меток под названием Category SEO Meta Tags 2.5 by Bala Krishna (http://www.bala-krishna.com). Я конечно не сторонник плагинов вообще и многими вашими кодами пользуюсь, доверяю мастеру своего дела.

    Допустим при добавлении мета данных в постах пользуюсь произвольными полями (ваш код для файла function.php и для header.php), а не all seo pack или подобными.

    Вот как вывести:

    без плагина только на первой странице меток и рубрик? Тимур сами понимаете остальные смысла продвигать нет.

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

    Кстати вопрос. Для продвижения стоит ли оставлять классический вид вывода анонсов (заголовок, миниатюра и кусок контента) или как то упростить (убрать миниатюры и текст, оставить заголовки, но не в , а допустим в

    их запаковать). Как для SEO лучше будет.
    Да и что там в коде вопроса нужно поправить?

    BigDimoz 3 года назад

    П.С. это к моему вопросу прилагается про вывод без плагинов.
    <meta name="description"
    <meta name="keywords" content="

    BigDimoz 3 года назад

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

    <?php if ( $paged < 2 ) { ?>
    <?php add_filter('tag_description', 'wpautop'); ?>
    <?php add_filter('tag_description', 'wptexturize'); ?>
    <?php $description = tag_description();
    echo $description;
    ?>
    <?php } else {
    // Do stuff specific to non-first page
    ?>
    <?php } ?>

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

    Kama 3 года назад

    Однако захожу на: /tag/materinskie-platy-asrock/page/2 смотрю исходный код и вижу там то есть в данном случае пропустит функция эту страницу.

    Так вы страницы пагинации закройте в robots.txt: Disallow: */page/

    Кстати вопрос. Для продвижения стоит ли оставлять классический вид вывода анонсов

    Не знаю... Мне кажется лучше делать так как удобнее и красивее в этом случае...

    Да и что там в коде вопроса нужно поправить?

    {echo "".''."\n";}

    Тут чего-то не хватает... Там код не был выделен, я выделил... Видимо теги вырезались какие-то...

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

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

    <?php 
    if ( ! is_paged() ) {
    	add_filter('term_description', 'wpautop');
    	add_filter('term_description', 'wptexturize');
    	echo term_description();
    }
    ?>

    -

    П.С.

    Я конечно не сторонник плагинов вообще и многими вашими кодами пользуюсь

    Я не противник плагинов, совсем нет! Я противник грузовых плагинов, плохих или ненужных.

    BigDimoz 3 года назад

    По файлу robots.txt полный порядок, там все логично получается. Все рубрики и метки открыты для индексации, однако если отсутствует дескрипшин робот проходит мимо (благодаря term_description()), если есть берет страницу в индекс. Далее заходит на вторую страницу видит тоже дескрипшин, однако правило Disallow: */page/ говорит ему стой братан не стоит оно того.

    По остальным вопросам:

    1. Код в вопросе подправил.

    2. Подкорректированный код для вывода контента работает нормально.

    3. По плагинам. Я это и имел ввиду, что в большинстве случаев оказывается можно кодом обойтись не желе устанавливать громоздкий плагин (именно их я не люблю, я скорость обожаю).
    BigDimoz 3 года назад

    Все норм код заработал! Благодарю за оный!

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Регистрация. Вход.