Как в Robots.txt закрыть поддомены от индексации?

Порой на сайтах становится необходимым закрыть от индексации поддомены. Например, при создании мультирегиональных или мультиязычных сайтов не всегда есть необходимость попадания поддоменов в поисковую выдачу. Чаще всего перед сеошником такая задача стоит когда нужно для Яндекса создать кучу региональных поддоменов, при этом для Google, из-за отличий регионального ранжирования, эти поддомены желательно скрыть от индексации в Robots.txt через директиву Disallow.

К сожалению директивы позволяющей сделать это в текстовом файле не существует, поэтому пришлось прибегнуть к PHP.

И так, создаем файл robots.php с примерно со следующим содержимым:

<?php 
header('Content-type: text/plain');
$subdomain = str_replace('нашдомен.com', '', $_SERVER['HTTP_HOST']);
if ($subdomain !== '') {
echo '
User-agent: googlebot
Disallow: /
';
}
?>
User-agent: *
Disallow: /includes/
Disallow: /misc/
Disallow: /modules/
#другие директивы вашего роботса 

Host: https://<?php echo $_SERVER['SERVER_NAME']; ?>
Sitemap: https://<?php echo $_SERVER['SERVER_NAME']; ?>/sitemap.xml

В данном примере мы задали, что если роботс показывается на поддомене, то добавляется директива User-agent: googlebot Disallow: / которая запрещает сайт к индексации в Google. Вы можете задать свое значение для отдельных User-agent (подробнее о User-agent тут )

Также в примере настроены динамические Host и Sitemap, то есть будет показываться именно текущий хост с нужным поддоменом, или без.

После того как файл robots.php залили в корневую папку сайта, нам нужно подправить файл .htaccess, где прописываем следующую строчку:

RewriteRule ^robots.txt$ /robots.php [L,QSA]

Удаляем текстовый файл robots.txt и проверяем работоспособность нового роботса. (кстати на некоторых хостингах редирект с robots.txt на robots.php работает наоборот, лишь при наличии обеих в корне сайта, поэтому удалять текстовый роботс или нет, нужно проверять индивидуальноо)