У нас есть настройка веб-сервера разработки XAMPP Apache с виртуальными хостами, и мы хотим, чтобы serps не сканировал все наши сайты. Это легко сделать с помощью файла robots.txt. Тем не менее, мы бы не хотели включать disallow robots.txt в каждый vhost, а затем должны были бы удалить его, когда начали работу с сайтом на другом сервере.
Есть ли способ с помощью файла конфигурации apache переписать все запросы к robots.txt для всех vhosts в один файл robots.txt?
Если да, не могли бы вы привести пример? Я думаю, что это будет что-то вроде этого:
RewriteEngine On
RewriteRule .*robots\.txt$ C:\xampp\vhosts\override-robots.txt [L]
Спасибо!
apache-2.2
php
robots.txt
Майкл Беркомпас
источник
источник
Ответы:
Apache mod_alias разработан для этого и доступен из базовой системы Apache, и его можно установить в одном месте, почти без затрат на обработку, в отличие от mod_rewrite.
С этой строкой в файле apache2.conf, вне всех vhost, http://example.com/robots.txt - на любом веб-сайте, который он обслуживает, будет выводить данный файл.
источник
Alias
в каждый<VirtualHost>
блок. +1.<Location "/robots.txt"> Allow from all </Location>
сразу после него внутри основного<IfModule alias_module>
Поместите свой общий глобальный
robots.txt
файл где-нибудь в файловой системе вашего сервера, которая доступна для процесса apache. Ради иллюстрации, я предполагаю, что это в/srv/robots.txt
.Затем, чтобы настроить
mod_rewrite
обслуживание этого файла клиентам, которые его запрашивают, поместите следующие правила в каждый<VirtualHost>
блок конфигурации vhost:Если вы помещаете правила перезаписи в
.htaccess
файлы для каждого каталога, а не в<VirtualHost>
блоки, вам нужно будет немного изменить правила:источник
mod_rewrite
хакере. ИспользуйтеAlias
вместо этого, как предложено Алистером.Не уверен, что вы запускаете XAMPP в Linux или нет, но если вы это делаете, вы можете создать символическую ссылку со всех виртуальных хостов на один и тот же файл robots.txt, но вам нужно убедиться, что ваша конфигурация Apache для каждого виртуального хоста соответствует разрешено следовать символическим ссылкам (в соответствии с
<Directory>
директивамиOptions FollowSymLinks
).источник
Другой подход к решению.
Я размещаю несколько (более 300) виртуальных хостов в своей кластерной среде. Чтобы защитить мои серверы от сбоев сканерами, я определяю задержку сканирования на 10 секунд.
Однако я не могу принудить всех своих клиентов с фиксированной конфигурацией robots.txt. Я позволяю своим клиентам использовать их собственный файл robots.txt, если они этого хотят.
Модуль перезаписи сначала проверяет, существует ли файл. Если он не существует, модули переписывают в мою конфигурацию по умолчанию. Пример кода ниже ...
Чтобы сохранить внутреннюю перезапись, следует использовать псевдоним. Вместо того, чтобы определять новый псевдоним, который может вызвать некоторые конфликты на стороне пользователя, я поместил мой robots.txt в папку / APACHE / error /, которая уже имеет псевдоним в качестве конфигурации по умолчанию.
источник