Крутой .htaccess

Когда речь заходить про .htaccess, мы обычно вспоминаем перенаправление — redirect, который помогает редиректить с одного убитого урла на новый (когда статья поменяла фактический адрес) или редирект домена с www на без www Это наиболее распространенные ситуации, которые приходится решать начинающим вебмастерам, прибегая к помощи файла .htaccess. Между тем, не все знают, что это мощный инструмент для очень большого числа ситуаций: он может ускорить ваш сайт, отбивать атаки ботов, фильтровать трафик, обмениваться трафиком между сайтами и т.д. и т.п.

.htaccess — файл, который дает возможность конфигурировать работу Вашего сервера в отдельных папках. Он с легкостью может заменить на Вашем сайте тяжелые плагины или модули, подгружаемые к сайту для решения тех или иных проблем. Достаточно прописать в нем соответствующие команды, которые вступают в силу немедленно, не требуя перезагрузки сервера.

Ниже я хочу показать вам несколько полезных и практичных команд для .htaccess, которые обязательно Вам пригодятся, если не прямо сейчас, то в обозримом будущем точно.

Блокируем ботов и пауков с помощью .htaccess
В интернете полно поисковых машин и разного рода сканеров, бесполезных для вашего сайта, но которые создают колоссальный трафик и нагрузку на ваш сайт. Особенно часто это прослеживается на дешевых тарифных планах. Вы наверное замечали такую ситуацию, что вроде бы и посещений нет на сайте, но техническая поддержка хостинга постоянно присылает письма о высокой нагрузке на вашем сайте?

Код ниже позволит запретить доступ бесполезным ботам на сайт:

RewriteCond %{HTTP_USER_AGENT} (Slurp|spider|Twiceler|heritrix|
Combine|appie|boitho|e-SocietyRobot|Exabot|Nutch|OmniExplorer|
MJ12bot|ZyBorg/1|Ask\ Jeeves|AskJeeves|ActiveTouristBot|
JemmaTheTourist| agadine3|BecomeBot|Clustered-Search-Bot|
MSIECrawler|freefind|galaxy|genieknows|INGRID|grub-client|
MojeekBot|NaverBot|NetNose-Crawler|OnetSzukaj|PrassoSunner|
Asterias\ Crawler|T-H-U-N-D-E-R-S-T-O-N-E|GeorgeTheTouristBot|
VoilaBot|Vagabondo|fantomBro wser|stealthBrowser|cloakBrowser|
fantomCrew\ Browser|Girafabot|Indy\ Library|Intelliseek|Zealbot|
Windows\ 95|^Mozilla/4\.05\ \[en\]$|^Mozilla/4\.0$) [NC]
RewriteRule ^(.*)$ - [F]
#
RewriteCond %{HTTP_USER_AGENT} ^Mozilla.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Opera.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Firefox.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Netscape.* [NC]
RewriteRule ^(.*)$ - [L]
RewriteRule ^(.*)$ - [F]

Вот еще один вариант, который также блокирует нежелательных ботов, фильтруя и блокируя их по User Agent:

SetEnvIfNoCase User-Agent "^Black Hole" bad_bot
SetEnvIfNoCase User-Agent "^Titan" bad_bot
SetEnvIfNoCase User-Agent "^WebStripper" bad_bot
SetEnvIfNoCase User-Agent "^ExtractorPro" bad_bot
SetEnvIfNoCase User-Agent "^CopyRightCheck" bad_bot
SetEnvIfNoCase User-Agent "^Crescent" bad_bot
SetEnvIfNoCase User-Agent "^Wget" bad_bot
SetEnvIfNoCase User-Agent "^SiteSnagger" bad_bot
SetEnvIfNoCase User-Agent "^ProWebWalker" bad_bot
SetEnvIfNoCase User-Agent "^CheeseBot" bad_bot
SetEnvIfNoCase User-Agent "^Teleport" bad_bot
SetEnvIfNoCase User-Agent "^TeleportPro" bad_bot
SetEnvIfNoCase User-Agent "^NetMechanic" bad_bot
SetEnvIfNoCase User-Agent "^CherryPicker" bad_bot
SetEnvIfNoCase User-Agent "^EmailCollector" bad_bot
SetEnvIfNoCase User-Agent "^EmailSiphon" bad_bot
SetEnvIfNoCase User-Agent "^WebBandit" bad_bot
SetEnvIfNoCase User-Agent "^EmailWolf" bad_bot
SetEnvIfNoCase User-Agent "^MIIxpc" bad_bot
SetEnvIfNoCase User-Agent "^Telesoft" bad_bot
SetEnvIfNoCase User-Agent "^Website Quester" bad_bot
SetEnvIfNoCase User-Agent "^WebZip" bad_bot
SetEnvIfNoCase User-Agent "^moget/2.1" bad_bot
SetEnvIfNoCase User-Agent "^WebZip/4.0" bad_bot
SetEnvIfNoCase User-Agent "^WebSauger" bad_bot
SetEnvIfNoCase User-Agent "^WebCopier" bad_bot
SetEnvIfNoCase User-Agent "^NetAnts" bad_bot
SetEnvIfNoCase User-Agent "^Mister PiX" bad_bot
SetEnvIfNoCase User-Agent "^WebAuto" bad_bot
SetEnvIfNoCase User-Agent "^TheNomad" bad_bot
SetEnvIfNoCase User-Agent "^WWW-Collector-E" bad_bot
SetEnvIfNoCase User-Agent "^spanner" bad_bot
SetEnvIfNoCase User-Agent "^InfoNaviRobot" bad_bot
SetEnvIfNoCase User-Agent "^Harvest/1.5" bad_bot
SetEnvIfNoCase User-Agent "^Bullseye/1.0" bad_bot
SetEnvIfNoCase User-Agent "^Mozilla/4.0 (compatible; BullsEye; Windows 95)" bad_bot
SetEnvIfNoCase User-Agent "^Crescent Internet ToolPak HTTP OLE Control v.1.0" bad_bot
SetEnvIfNoCase User-Agent "^CherryPickerSE/1.0" bad_bot
SetEnvIfNoCase User-Agent "^RMA" bad_bot
SetEnvIfNoCase User-Agent "^libWeb/clsHTTP" bad_bot
SetEnvIfNoCase User-Agent "^asterias" bad_bot
SetEnvIfNoCase User-Agent "^httplib" bad_bot
SetEnvIfNoCase User-Agent "^turingos" bad_bot
SetEnvIfNoCase User-Agent "^CherryPicker /1.0" bad_bot
SetEnvIfNoCase User-Agent "^WebBandit/3.50" bad_bot
SetEnvIfNoCase User-Agent "^NICErsPRO" bad_bot
SetEnvIfNoCase User-Agent "^Microsoft URL Control - 5.01.4511" bad_bot
SetEnvIfNoCase User-Agent "^DittoSpyder" bad_bot
SetEnvIfNoCase User-Agent "^Foobot" bad_bot
SetEnvIfNoCase User-Agent "^WebmasterWorldForumBot" bad_bot
SetEnvIfNoCase User-Agent "^SpankBot" bad_bot
SetEnvIfNoCase User-Agent "^BotALot" bad_bot
SetEnvIfNoCase User-Agent "^lwp-trivial/1.34" bad_bot
SetEnvIfNoCase User-Agent "^lwp-trivial" bad_bot
SetEnvIfNoCase User-Agent "^Wget/1.6" bad_bot
SetEnvIfNoCase User-Agent "^BunnySlippers" bad_bot
SetEnvIfNoCase User-Agent "^humanlinks" bad_bot
SetEnvIfNoCase User-Agent "^LinkextractorPro" bad_bot
SetEnvIfNoCase User-Agent "^Offline Explorer" bad_bot
SetEnvIfNoCase User-Agent "^Mata Hari" bad_bot
SetEnvIfNoCase User-Agent "^LexiBot" bad_bot
SetEnvIfNoCase User-Agent "^Web Image Collector" bad_bot
SetEnvIfNoCase User-Agent "^The Intraformant" bad_bot
SetEnvIfNoCase User-Agent "^True_Robot/1.0" bad_bot
SetEnvIfNoCase User-Agent "^True_Robot" bad_bot
SetEnvIfNoCase User-Agent "^Microsoft URL Control - 6.00.8169" bad_bot
SetEnvIfNoCase User-Agent "^URLy Warning" bad_bot
SetEnvIfNoCase User-Agent "^Wget/1.5.3" bad_bot
SetEnvIfNoCase User-Agent "^LinkWalker" bad_bot
SetEnvIfNoCase User-Agent "^cosmos" bad_bot
SetEnvIfNoCase User-Agent "^moget" bad_bot
SetEnvIfNoCase User-Agent "^hloader" bad_bot
SetEnvIfNoCase User-Agent "^BlowFish/1.0" bad_bot
SetEnvIfNoCase User-Agent "^JennyBot" bad_bot
SetEnvIfNoCase User-Agent "^MIIxpc/4.2" bad_bot
SetEnvIfNoCase User-Agent "^BuiltBotTough" bad_bot
SetEnvIfNoCase User-Agent "^ProPowerBot/2.14" bad_bot
SetEnvIfNoCase User-Agent "^BackDoorBot/1.0" bad_bot
SetEnvIfNoCase User-Agent "^toCrawl/UrlDispatcher" bad_bot
SetEnvIfNoCase User-Agent "^WebEnhancer" bad_bot
SetEnvIfNoCase User-Agent "^TightTwatBot" bad_bot
SetEnvIfNoCase User-Agent "^suzuran" bad_bot
SetEnvIfNoCase User-Agent "^VCI WebViewer VCI WebViewer Win32" bad_bot
SetEnvIfNoCase User-Agent "^VCI" bad_bot
SetEnvIfNoCase User-Agent "^Xenu's Link Sleuth 1.1c" bad_bot
SetEnvIfNoCase User-Agent "^Xenu's" bad_bot
SetEnvIfNoCase User-Agent "^Zeus" bad_bot
SetEnvIfNoCase User-Agent "^RepoMonkey Bait & Tackle/v1.01" bad_bot
SetEnvIfNoCase User-Agent "^RepoMonkey" bad_bot
SetEnvIfNoCase User-Agent "^Zeus 32297 Webster Pro V2.9 Win32" bad_bot
SetEnvIfNoCase User-Agent "^Webster Pro" bad_bot
SetEnvIfNoCase User-Agent "^EroCrawler" bad_bot
SetEnvIfNoCase User-Agent "^LinkScan/8.1a Unix" bad_bot
SetEnvIfNoCase User-Agent "^Keyword Density/0.9" bad_bot
SetEnvIfNoCase User-Agent "^Szukacz/1.4" bad_bot
SetEnvIfNoCase User-Agent "^QueryN Metasearch" bad_bot
SetEnvIfNoCase User-Agent "^Openfind data gathere" bad_bot
SetEnvIfNoCase User-Agent "^Openfind" bad_bot
SetEnvIfNoCase User-Agent "^Kenjin Spider" bad_bot
SetEnvIfNoCase User-Agent "^Cegbfeieh" bad_bot
Order Allow,Deny
Allow from all
Deny from env=bad_bot


Блокируем хакеров и недоброжелателей
Если вы пристально изучите логи посещений своего сайта, то заметите, постоянные и регулярные запросы к вашему сайту странного содержания. Например, могут ломиться в админку или на не существующие, но вытекающие отсюда адреса:

/admin
/administrator
/a
/admin.php
/administrator.php
...

Во-первых, мы можем запретить доступ на сайт такому взломщику по ip (он или они будет указан в логах):

<Limit GET POST PUT>
order allow,deny
allow from all
deny from 191.132.52.165
deny from 121.346.124
</LIMIT>


При желании, мы можем редиректить взломщика на нужную нам страницу, например, hakeram.php, где можем разместить гневный текст, недовольство его деятельностью или личное предупреждение. В нижеприведенном примере, посетитель с ip адресом 191.132.52.165 будете перенаправлен на страницу hakeram.php:

SetEnvIf REMOTE_ADDR 191.132.52.165  REDIR="redir"
RewriteCond %{REDIR} redir
RewriteRule ^/$ / hakeram.php


А во-вторых, мы можем перенаправлять нежелательные запросы (обычно это проделки хакеров, сетевых вирусов и сканеров) к нашему сайту на какой-то посторонний ресурс. В нашем примере, все странные запросы будем автоматически перенаправлять на сайт Microsoft:

redirect /admin http://www.microsoft.com
redirect /administrator http://www.microsoft.com
redirect /a http://www.microsoft.com
redirect /admin.php http://www.microsoft.com
redirect /d http://www.microsoft.com
redirect /administrator.php http://www.microsoft.com
Умный редирект с помощью .htaccess


С помощью .htaccess возможно реализовать на своем сайте «умный» редирект, перенаправлять определенных пользователей на удобные нам странички в зависимости от некоторых условий. Такие манипуляции иногда очень полезны. Например, в одно время на одном из сайтов моего клиента происходило открытое голосование и один из участников-номинантов дабы накрутить голоса, сделал ход конем: создал на одном из буксов (букс — система, в которой рекламодатели платят исполнителям чтобы прорекламироваться) задание по накрутке голосов... Пресечь накрутку удалось с помощью все того же .htaccess (см. ниже).

Мы можем редиректить определенных роботов и пользователей по user-agent:

RewriteCond %{HTTP_USER_AGENT} ^SpiderX
RewriteRule ^(.*)$ http://%{REMOTE_ADDR}/$ [r=301,l]


В этом примере, все клиенты со строкой HTTP_USER_AGENT начинающейся на SpiderX будут направлены туда, откуда и пришли (от ворот поворот).

Для редиректа посетителей, пришедших на наш сайт, с определенных сайтов, можно использовать такое правило в .htaccess:

RewriteCond %{HTTP_REFERER} www.microsoft.com [NC]
RewriteRule .* http://google.ru/


В этом примере, все пользователи, которые придут на наш сайт с http://www.microsoft.com будут отфутболены на http://google.ru/

Наконец, некоторым может пригодится условие редиректа, в зависимости от текущего времени.

RewriteEngine on
RewriteCond %{TIME_HOUR}%{TIME_MIN} >0600
RewriteCond %{TIME_HOUR}%{TIME_MIN} <1900
RewriteRule ^index.html$ /dobriy_den.php
RewriteRule ^index.html$ /dobriy_vecher.php


В этом примере, с 6.00 часов утра и до 19.00 пользователи, приходящие на страницу index.html будут перенаправляться на URL dobriy_den.php, а с 19:00 и до 6.00 утра, на URL dobriy_vecher.php.

Резюме. Это не все примеры реализации манипуляций трафиком с помощью .htaccess, а лишь беглая демонстрация очень больших возможностей файла .htaccess и вытекающий отсюда стимул поглубже вникнуть в синтаксис написания правил этого конфигурационного файла.
Файлы статьи:
0 комментариев
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.