Назад | Перейти на главную страницу

Как обслуживать robots.txt для всех моих собственных поддоменов, но не для других хостов на Apache?

Мы разрабатываем веб-сайты и размещаем среду контроля качества на том же сервере, что и производственная среда. Я хочу предоставить определенный файл robots.txt для всех сайтов контроля качества, но не для рабочих сайтов. У нас есть много сайтов, поэтому я не хочу, чтобы многие все обновляли сотни блоков конфигурации vhost. Сайты QA легко идентифицировать как по имени домена, так и по каталогу, в котором они находятся. QA и производственные сайты сгруппированы в двух разных каталогах. Все сайты контроля качества размещаются на * .qa.mycompany.com.

Пример продукции: host: example.org docroot: /var/www/production/example.org

Пример QA: host: example.qa.mycompany.com docroot: /var/www/qa/example.org

Есть ли способ настроить Apache для обслуживания robots.txt для всех сайтов QA, но не для рабочих сайтов, без необходимости обновлять все конфигурации vhost QA?

Вы можете сделать это с mod_alias & Если заявлениедобавьте это в конфигурацию вашего сервера:

Alias /robots.txt /path/to/robots.txt
Alias /qa_robots.txt /path/to/robots.txt

<If "%{DOCUMENT_ROOT} =~ /(\x2Fvar\x2Fwww\x2Fqa\x2F)/">
RewriteRule ^robots\.txt$  qa_robots.txt
</If>

Оператор If доступен только в Apache 2.4, и вы пометили свой вопрос как 2.2 и 2.4 ... поэтому он может не решить вашу проблему, если вы используете Apache 2.2.

Как ты не можешь сбежать / в операторе if, / заменены на x2F

Я не тестировал его, но теоретически он должен работать.

Вы можете добавить это

<Directory "/var/www/qa/*">
  Redirect permanent robots.txt http://example.com/qa_robots.txt
</Directory>

Чем вы могли бы разместить свой qa-robots.txt в общедоступном месте на глобальном хосте, блок каталога должен перенаправлять на него все папки / qa /.

Поисковые системы также должны следовать этому перенаправлению.

Вместо перенаправления вы также можете добавить

ErrorDocument 404 "/var/www/qa_robots.txt"

Но это отправит код ошибки 404. Я не уверен, как поисковые роботы на это реагируют. Я думаю, что это тоже можно сделать с помощью mod_rewrite и соответствующий RewriteCond