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

Как заблокировать пауков / скребков по УДАЛЕННОМУ имени хоста / домену для всех виртуальных хостов в Apache?

Я видел много файлов robot.txt и некоторые решения для перезаписи модов, которые выглядели многообещающими ... но не смог найти простого решения, чтобы заблокировать пауков / скребков / кого бы то ни было, черт возьми, я хочу заблокировать ... Я бы предпочел сделайте это с помощью имени хоста / домена, поскольку это кажется проще, чем полагаться на пользовательские агенты и т. д.

Например, скажем, я должен был увидеть это в журналах Apache ..

msnbot-207-46-192-48.search.msn.com - - [07/Dec/2011:23:01:41 -0500] "GET /%3f/$/bluebox/blog/2011/iphoto/ HTTP/1.1" 404 366

хорошо ... я хочу предотвратить *.search.msn.com с любого моего сайта - в любую из моих папок - VHOST или иным образом…

Обычно у меня МНОГО <VirtualHost *.80>настройки, и НЕ хочу повторять настройку для каждого хоста .. В том же духе у меня есть много DocumentRoot's ... и помещая файл в каждый из них, иначе .htaccess действительно не вариант ..

Я что-то использовал в httpd.conf это напоминало…

RewriteEngine on

RewriteCond %{HTTP_USER_AGENT} ^BadBot [OR]

RewriteRule ^(.*)$ http://go.away/`

Как я могу использовать имена хостов, предоставленные UseCanonicalName On покрыватьDeny all какой домен я так хотел?

UseCanonicalName для имени хоста сервера, а не для клиента.

Это будет отлично работать в вашей глобальной конфигурации, вне любых VirtualHost, пока у вас нет Order директива в vhosts:

Order Allow,Deny
Allow from all
Deny from search.msn.com

Возможно, это не лучшая идея делать это по имени хоста, поскольку Apache должен будет выполнять поиск для каждого запроса.

Почему бы не сделать это с IPtables?