Настройка robots.txt для разных хостов
Постановка задачи
Для поддоменов нужен отдельный robots.txt с запретом на индексацию
Описание проблемы
Для упрощения поддержки таких доменов, они делаются синонимами основного домена, а значит имеют общий контент, общую корневую директорию, а значит и общие файлы, в том числе и robots.txt.
Например, для сайтов site.ru и sub.site.ru корневая директория /home/www/site.ru (где и лежит их общий robots.txt).
Вводные данные
Домен основного сайта: site.ru
Подоомены: kazan.site.ru, spb.site.ru, krasnodar.site.ruДалее рассмотрим два случая:
- Проксирование статики на сервере происходит на стороне apache
- Проксирование статики на сервере происходит на стороне nginx
Наша задача сделать так, чтобы для основного домена и поддоменов отдавался разный файл robots.txt
Для начала мы создадим два файла robots.txt для основного домена и robots-subdomains.txt для поддоменов.
robots.txtUser-agent: * Allow: /
robots-subdomains.txt
User-agent: * Disallow: /
Проксирование статики на apache
В случае, проксирование статики происходит на стороне apache все просто - добавляем в .htaccess строки:
RewriteCond %{HTTP_HOST} ^subdomain.site.ru$ RewriteRule ^robots.txt$ /robots-subdomains.txt [L]
и создаем файл, например, robots-subdomains.txt - robots для поддоменов.
Проксирование статики на nginx
В случае проксирования статики на nginx задача слегка усложняется. Файл robots.txt будет отдаваться nginx’ом и поэтому до правил в .htaccess дело не дойдёт. Для того, чтобы иметь возможность перенаправить запросы к файлу robots.txt, нам надо, чтобы его отдавал apache. Для этого мы переименуем файл robots.txt в main-robots.txt. В этом случае, не найдя файл robots.txt в корне сайта, nginx передаст запрос на apache, который обработает перенаправления в .htaccess.
В итоге у нас должно получиться два файла: main-robots.txt для основного домена и robots-subdomains.txt для поддоменов. В .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]
← Назад в раздел