robots.txt для WordPress – рабочий пример файла

Провел SEO-аудит сайта при помощи labrika.ru. Оказалось что много технических ошибок. Важно этот файл готовить правильно 🙂 Пришлось колдовать с файлом robots txt. Готового плагина для этих целей у меня нет. Потому решил задачу программно.

Задачи для настройки robots.txt

  • закрыть все страницы пагинации
  • попало много страниц типа ?products-per-page= – закрыл
  • закрыть страницы переадресации типа /gurl/ (это специфика только моего сайта, и больше нигде не нужно)

Результат https://wpcraft.ru/robots.txt

Пример кода для WordPress

  • Важно заменить url в параметре Sitemap с учетом вашего сайта
  • Строку с gurl можно не копировать, тк это нужно только для моего сайта
  • Можно дополнять с учетом особенностей вашего сайта
add_filter('robots_txt', function($output){
    $lines = [
        'User-agent: *',
        'Allow: /wp-admin/admin-ajax.php',
        'Disallow: /wp-admin/',
        'Disallow: /author/',
        'Disallow: */comments',
        'Disallow: */page/',
        'Disallow: */embed',
        'Disallow: *?s=',
        'Disallow: *products-per-page=',
        'Disallow: */gurl/',
        'Disallow: /trackback',
        '',
        'Sitemap: https://wpcraft.ru/sitemap.xml',
    ];

    ob_start();
    echo implode( "\r\n", $lines );
    $output = ob_get_clean();

    return $output;
}, 999);

Где находится robots.txt в WordPress?

Такого файла нет. Он генерируется автоматически и потому лучше использовать указанный код выше.

Код можно вставить в functions.php темы WordPress или в папку wp-content/mu-plugins/ как файл robots.php.

Фото аватара
Antony I

Веб разработчик, специализация на лучших мировых практиках: WordPress, WooCommerce, NextJS, Strapi, JAMStack ...

Основные типы проектов: CMS, eCommerce, SEO, LMS, ECM, BPM

Подробнее...

Статей: 123

комментариев 5

    • в тех плагинах что есть такой опции не было.
      плагин который это делает хорошо – мне не знаком.
      искать – дольше чем писать свой код.
      вот и написал.

  1. Почему не вписать сразу вместо домена сайта значение HTTP_HOST из массива $_SERVER?

    • А почему его надо писать?

      Это опциональность и универсальность. А значит усложнение. Любое усложнение должно иметь веские причины.
      Я тут не увидел веских причин усложнять код. Код решает конкретную задачу. Так он проще для чтения, понимания и написания.

  2. Зачем буферизация?

    ob_start();
    echo implode( “\r\n”, $lines );
    $output = ob_get_clean();
    return $output;

    когда всё нужно одной строкой

    return implode( “\r\n”, $lines );

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *