хочу пустить на сайт из ботов только гугл и яндекс, другие поисковые системы мне не нужны а так же вообще нужно блокировать всех чей useragent не человеческий. как это всё реализовать правильно ? можно искать списки ботов, но ботов всё больше становится и всех так не внесёшь можно ли прописать в .htaccess правило которое выполнит такие действия ?
Нет, это делается в robots.txt, вот так: Code: User-agent: MSNBot Disallow: / Тут , вроде полный список имен, хотя лучше погугли сам.
Звучит, как всемирный заговор банков. Хотя конечно - хозяин барин, можешь и через mod_rewrite в .htaccess: Code: <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_USER_AGENT} "MSNBot|BingPreview|..." [NC] RewriteRule ^$ http://site.ru/hull.php [L,R=302] </IfModule>
я сделал вот так PHP: <ifmodule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_USER_AGENT} "Mozilla/[1-9]\." [NC,OR] RewriteCond %{HTTP_USER_AGENT} "Firefox/[1-3]\." [NC,OR] RewriteCond %{HTTP_USER_AGENT} Opera/9\..*Version/(1[10]|[1-9])\. [NC,OR] RewriteCond %{HTTP_USER_AGENT} "Opera/[1-8]\." [NC,OR] RewriteCond %{HTTP_USER_AGENT} "MSIE [1-7]\." [NC] RewriteCond %{HTTP_USER_AGENT} "Google/[1-9]\." [NC,OR] RewriteCond %{HTTP_USER_AGENT} "Yandex/[1-9]\." [NC,OR] RewriteRule . http://localhost/page.php [L] </ifmodule> ещё не на всех браузерах проверил но работает редирект можно ли сделать только что бы не выше указанные мною браузеры редиректились а те которые не соответствуют правилам - то есть не прописаны выше - должны отправляться по ссылке - а прописанные заходить на сайт как обычно? проверил, гугл и яндекс бот не фильтровались по таким правилам PHP: RewriteCond %{HTTP_USER_AGENT} "Google/[1-9]\." [NC,OR] RewriteCond %{HTTP_USER_AGENT} "Yandex/[1-9]\." [NC,OR] под этим правилом прописал: PHP: SetEnvIfNoCase User-Agent "^Yandex" search_bot SetEnvIfNoCase User-Agent "^Googlebot" search_bot <Limit GET POST HEAD> Order Allow,Deny Allow from all Allow from env=search_bot </Limit> как фильтровать useragent по маске ? вот такой например что бы не проскочил Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp) yahoo слово по маске задать, где оно содержится то блокировать
Писать исключение для "всех кроме", практика сомнительная. Потом будешь мониторить выход новых версий браузеров и вечно править .htaccess? Я бы не советовал. А вот маску для ботов, действительно можно задать: Code: <IfModule mod_rewrite.c> RewriteEngine on RewriteBase / RewriteCond %{HTTP_USER_AGENT} Yahoo [OR] RewriteCond %{HTTP_USER_AGENT} Igde [COLOR=Green]...etc[/COLOR] RewriteRule (.*) - [F,L] </IfModule> Еще есть интересный ман в энциклопедии htaccess, да и вообще там много интересного: тык
я бы рискнул по браузерам фильтровать, есть где проверить эту теорию, только как сделать такой белый список, в котором всё что не в списке - то блокируется или редиректится? вообщем вопрос решён, всё получилось, испытание прошли отлично белый список работает