Мы разрабатываем веб-сайты и размещаем среду контроля качества на том же сервере, что и производственная среда. Я хочу предоставить определенный файл 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