Настройка robots.txt через php файл для поддоменов

Если на проекте присутствует несколько поддоменов, то рано или поздно вы столкнетесь с вопросом разных файлов robots.txt для каждого из них. Но что делать, если htaccess отказывается менять файл для каждого условия?

Как добавить поддоменам разные robots.txt при помощи PHP в файле htaccess?

Что из себя представляет данный файл? Как правило, его структура выглядит так:

User-Agent: *
Disallow: *?*
Disallow: /video/
Sitemap: http://site.ru/sitemap.xml

Основная причина, почему в статье речь пойдет про PHP:
1. вам не придется создавать для каждого поддомена свой личный файл robots.txt (это плюс, если таких поддоменов больше 3, например, региональные)
2. на некоторых площадках, htaccess должным образом не обрабатывает правила замены

О каких правилах замены идет речь? Ну, предположим:

RewriteCond %{HTTP_HOST} ^site.ru$
RewriteRule ^robots.txt$ /robots-main.txt [L]
RewriteCond %{HTTP_HOST} ^subdomain.site.ru$
RewriteRule ^robots.txt$ /robots-subdomains.txt [L]

А теперь Решение:
Т.к. работаю с битриксом, то в моем случае этот блок настоек выглядит так:

<IfModule mod_rewrite.c>
  Options +FollowSymLinks
  RewriteEngine On
  RewriteBase /
  RewriteRule ^robots.txt$ robots_for_domain.php [L]

...
</IfModule>

Добавили строчку:

RewriteRule ^robots.txt$ robots_for_domain.php [L]

Теперь, код php файла:

<?header("Content-Type:text/plain");?>
User-Agent: *
Disallow: *?*
Disallow: /video/
<?if ($_SERVER['HTTP_HOST'] != 'site.ru') {?>
Disallow: /news/
<?}?>
Sitemap: http://<?=$_SERVER['HTTP_HOST']?>/sitemap.xml
Host: http://<?=$_SERVER['HTTP_HOST']?>

Обратите внимание, для всех поддоменов, добавили проверку, если это не основной сайт (site.ru), то дописываем Disallow:

<?if ($_SERVER['HTTP_HOST'] != 'site.ru') {?>
Disallow: /news/
<?}?>

Вот таким нехитрым образом, мы подключили обработку всех robots.txt на один файл.
У этого метода есть только один, на мой взгляд, существенный минус – если вам нужны уникальные строки для одного из поддоменов, то вам необходимо будет при помощи проверок, свич-кэйсов и прочих методов добавить это в php файл.

Но это уже, как говорится, совсем другая история 🙂 .

Если на Вашем проекте необходимо добавить выбор города или региона с переходом на поддомен, обращайтесь ко мне.

автор: Dmitriy

З 2011 року займаюся веб-розробкою. Зараз я – PHP Full Stack Developer.
Обговорити ваш проект, а також дізнатися більше про мене ви можете на цьому сайті:
dev.forwww.com

Email: dmitriyribka@gmail.com

Залишити відповідь