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
BigDimoz12 2.8 года назад
  • 0
    Kama4660

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

    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 2.8 года назад

    Гениально! Пока "вкурил" как говорится, потом осенило, точно, ведь можно проверять наличие дискрипшин на странице. Однако захожу на: /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 2.8 года назад

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

    BigDimoz 2.8 года назад

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

    <?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 2.8 года назад

    Однако захожу на: /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 2.8 года назад

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

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

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

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

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

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

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