Blokady robotów w pliku .htaccess

Na naszym hostingu SEO są domyślnie blokowane roboty analizujące zaplecze: Majestic SEO, ahrefs, SeoMoz itp. Możesz jednak chcieć zablokować inne boty lub posiadasz inny rodzaj hostingu i chcesz dokonać blokady. Poniższy poradnik pokaże Ci jak to zrobić.

Wszystkie poniższe reguły blokowania należy dodać w pliku .htaccess w katalogu public_html dla danej domeny.

Blokada botów poprzez SetEnvIfNoCase oraz SetEnvIf

Na naszych serwerach hostingowych zainstalowany jest moduł Apache mod_setenvif. Można więc skorzystać z niego do blokady botów na serwerze.

SetEnvIfNoCase ^User-Agent$ .*nazwa_bota BadBotSetEnvIfNoCase ^User-Agent$ .*(nazwa_innego_bota|nazwa_innego_bota2) BadBotOrder allow,denyAllow from allDeny from env=BadBot

Fragmenty wpisów "nazwa_bota" lub "nazwa_innego_bota" należy zamienić na faktyczne nazwy botów, lub fragmenty tych nazw.

Korzystają z takiego zapisu, przy połączeniu serwer sprawdzi zawartość nagłówka User-Agent, jeśli jakiś jego fragment pasuje do ciągu znaków spisanych w powyższych formułach, do serwera odpytującego zostanie zwrócony błąd 403.

Powyższy zapis może być oczywiście dłuższy (posiadać więcej wierszy) lub więcej nazw botów w nawiasach, w zależności do potrzeb.

Blokada botów poprzez RewriteCond i RewriteRule

Innym sposobem poza modułem mod_setenvif jest wykorzystanie RewriteCond i RewriteRule.

RewriteRule to reguły przepisywania adresów URL, są one wykonywane jedna po drugiej. Jest jednak możliwość umieszczenia L w nawiasach kwadratowych na końcu wiersza [L], oznacza to daną regułę jako ostatnią i kolejnie nie będą wykonywane.

RewriteCond to opcjonalny warunek, który musi być spełniony, aby zostały wykonane reguły zawarte w RewriteRule. Warunki umieszczane są przed RewriteRule i sprawdzane są jeden po drugim. RewriteRule jest wykonywane, jeśli wszystkie warunki zostały spełnione. Tak, jak w przypadku RewriteRule powyżej i tutaj można umieścić na końcu linii dodatkowe zapisy. Warunki zawarte w RewriteCond dotyczą tylko pierwszej reguły zapisanej w RewriteRule, zaraz po warunkach.

W przypadku RewriteRule i RewriteCond w nawisach kwadratowych mogą znajdować się oznaczenia:

  • [OR] – łączy to wpis/warunek w kolejnej linii zapisem logicznym "lub". W tym wypadku ciąg warunków jest spełniony, jeśli jeden lub więcej warunków składowych jest spełniony.
  • [NC] – wielkość liter nie ma znaczenia (ważne przy nazwach botów)
  • [L] – oznacza daną regułę RewriteRule jako ostatnią, kolejne nie będą wykonywane
  • [F] – po spełnieniu warunków zwraca błąd 403

Przykładowy zapis w .htaccess przy wykorzystaniu RewriteCond i RewriteRule będzie wyglądał następująco.

RewriteEngineOnRewriteCond %{HTTP_USER_AGENT} .*nazwa_bota* [NC,OR]RewriteCond %{HTTP_USER_AGENT} .*nazwa_innego_bota* [NC]RewriteRule ^.* - [F,L]

Oznacza to: jeśli nazwa user agenta zawiera "nazwa_bota" lub [OR] "nazwa_innego_bota" (wielkość znaków nie ma znaczenia [NC]), zwróć błąd 403 [F] i zakończ wykonywanie RewriteRule [L].

Blokada botów z pustym User-Agent z wykorzystaniem RewriteCond i RewriteRule

Niekiedy roboty nie mają uzupełnionego User-Agent, dzięki czemu nie będą blokowane przez poprzednie wpisy. Aby takie boty zablokować, należy do pliku .htaccess dodać następujący wpis.

RewriteEngineOnRewriteCond %{HTTP_REFERER} ^-?$ [NC]RewriteCond %{HTTP_USER_AGENT} ^-?$ [NC]RewriteRule .* - [F,L]

Wpis blokuje roboty z pustym User-Agent i User-Refferer, dzięki temu nie będą blokowani użytkownicy korzystający ze starych programów antywirusowych. Niektóre mogą blokować User-Agent użytkownika.

Blokowanie botów poprzez IPv4 i IPv6

Część robotów podszywa się pod przeglądarki internetowe, takie jak: Mozilla Firefox, Opera, czy Google Chrome. Całego ruchu z danej przeglądarki nie powinno się blokować, z oczywistej przyczyny - zablokowani zostaną również odwiedzający stronę, korzystający z danej przeglądarki.

W takim wypadku można zablokować adres IPv4 lub IPv6, z którego łączy się dany bot. Można to osiągnąć poprzez dodanie poniższego wpisu do .htaccess.

Deny from "Adres IPv4"Deny from "Adres IPv6"

Oczywiście "Adres IPv4" lub "Adres IPv6" należy zamienić na faktyczny adres IP.

Plik robots.txt

Dodatkowo do .htaccess można również w głównym katalogu domeny dodać plik robots.txt, dzięki temu plikowi można zezwolić lub zablokować dostęp robotom do danej strony, lub konkretnych plików czy katalogów.

Zezwolenie na dostęp do całej strony

Ten zapis zezwala wszystkim robotom na dostęp do całej strony, tak samo byłoby w przypadku braku pliku robots.txt.

User-agent: *Allow:

Zablokowanie dostępu do całej strony

Poniższy wpis działa całkowicie przeciwnie do poprzedniego. Blokuje wszystkim robotom dostęp do całej strony.

User-agent: *Disallow: /

Zablokowanie dostępu do konkretnych katalogów

Poniższy wpis blokuje dostęp do katalogów "pliki" oraz "zdjecia" w głównym katalogu domeny.

User-agent: *Disallow: /pliki/Disallow: /zdjecia/

Zablokowanie dostępu do pliku

Ostatnim przedstawionym w tym tekście przykładów, jest blokada dostępu do danego pliku na domenie. Jako przykład podałem plik "strona.html" w katalogu "pliki".

User-agent: *Disallow: /pliki/strona.html

Powyższe przykłady można rozszerzać o kolejne katalogi czy pliki, do których chcesz zablokować dostęp. Nie ma tutaj limitu na ilość zablokowanych elementów.