SEO i .htaccess – Przydatne tricki do optymalizacji SEO

Plik .htaccess i jego zawartość potrafią doprowadzić niejedną osobę do obłędu. Nie zmienia to jednak faktu, że dzięki .htaccess możemy zdziałać prawdziwe cuda z naszą stroną internetową. Wiedza o składni .htaccess i mod_rewrite daje duże możliwości w optymalizacji i modyfikacji naszej strony pod kątem SEO. Poniżej przedstawiam kilka najważniejszych tricków w .htaccess, które powinien znać każdy pozycjoner, programista i webmaster.

Przekierowanie 301 starych podstron na nowe

Częsty przypadek – z różnych powodów trzeba zmienić adres URL podstrony. Do tego świetnie nadaje się plik .htaccess i mod_rewrite. Oto fragment kodu dla pojedynczych przekierowań:

Redirect 301 /stara-podstrona /nowa-podstrona

Powyższy kod po prostu wykonuje przekierowanie HTTP/301 adresu starego na nowy. Aby przekierować wiele podstron jednocześnie można skorzystać z wyrażenia regularnego:

RewriteRule ^stary/(.*) nowy/$1 [L,R=301]

Taki kod przekieruje 301 wszystko z folderu stary do nowy. Oczywiście można tu zastosować o wiele bardziej wyrafinowane wyrażenie regularne, dostosowane do potrzeb.

Przekierowanie na nową domenę

Zmiana domeny na nową najczęściej ma miejsce przy zmianie nazwy firmy. Przekierowanie HTTP/301 domeny może być też świetnym sposobem na uniknięcie duplicate content gdy domena ma drugi alias. Możliwości jest wiele, ja najbardziej lubię poniższe rozwiązanie:

RewriteCond %{HTTP_HOST} !^www.domena.pl$
RewriteRule ^(.*)$ http://www.domena.pl/$1 [R=301,L]

Istotny jest znak wykrzyknika (!). Powyższy kod działa tak: Jeżeli host jest inny niż www.domena.pl, przekieruj 301 wszystkie podstrony na www.domena.pl/$1

Ten kod przy okazji rozwiązuje poniższy problem kanoniczności domeny, czyli www i bez www.

Przekierowanie www bez www (kanoniczność domeny)

Działanie strony zarówno pod adresem domena.pl jak i www.domena.pl jest bardzo częstym błędem optymalizacyjnym spotykanym podczas audytów SEO na wielu stronach. Łatwo to wyeliminować stosując poniższą regułę:

RewriteCond %{HTTP_HOST} ^domena.pl$
RewriteRule ^(.*)$ http://www.domena.pl/$1 [R=301,L]

Działanie jest proste: Jeżeli jest host domena.pl to przekieruj 301 na www.domena.pl. Dbając o kanoniczność domeny pamiętaj także o konsekwencji linków www/bez www w kodzie strony oraz w mapie witryny sitemap.xml

Przekierowanie w drugą stronę, czyli „z www na bez www” jest równie proste:

RewriteCond %{HTTP_HOST} ^www.domena.pl$
RewriteRule ^(.*)$ http://domena.pl/$1 [R=301,L]

Przekierowanie strony na HTTPS (SSL)

Wdrażając na stronie certyfikat SSL, nasza strona powinna działać poprzez protokół HTTPS. Oznacza to, że adres naszej strony nie będzie już http://strona.pl a https://strona.pl – w takim przypadku powinniśmy wymusić przekierowanie strony bez certyfikatu, na wersję HTTPS.

Wykorzystujemy w tym celu reguły:

RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Pierwsza linia to sprawdzenie czy jesteśmy na wersji HTTPS. Jeżeli nie, druga linia wymusza przekierowanie 301 dowolnej podstrony na wersję HTTPS.

Indeks plików w folderach

Dobrym nawykiem jest taka konfiguracja serwera, aby uniemożliwiał on listowanie zawartości folderów i podgląd plików wgranych na serwer. Jeżeli jednak z jakiegoś powodu chcemy umożliwić listowanie plików w folderze na serwerze, posłuży nam do tego poniższa dyrektywa w .htaccess:

Options All +Indexes

Aby ukryć pliki w folderach należy zmienić na:

Options All -Indexes

Włączenie dyrektywy pozwala pokazać stronę „Index of /” a pod spodem lista plików. To jednak nie wszystko. Mamy dodatkowe opcje, które możemy ustawić, przykładowo:

IndexIgnore *.png *.avi
IndexOptions +FancyIndexing
DirectoryIndex mojplik.html

Pierwsza linijka IndexIgnore *.png *.avi sprawi, że pliki z rozszerzeniami PNG i AVI nie będą widoczne. Możemy dzięki temu ukryć część plików przed niepowołanymi osobami.

Linia IndexOptions +FancyIndexing sprawia, że lista plików zawiera ikonki i w ogóle jest ładniejsza 😉 Wygląd listy można uprościć wstawiając linię IndexOptions -FancyIndexing (z minusem).

Ostatnia linijka DirectoryIndex mojplik.html pozwoli nam wyświetlić dowolny plik, zamiast listy plików w katalogu (ot taki bajer).

Zabezpieczenie przed hotlinkowaniem

Jeżeli transfer jest problemem dla Twojego serwera i nie chcesz aby ktoś wyświetlał Twoje multimedia na swojej stronie, rozwiązaniem może być zabezpieczenie przed hotlinkowaniem w .htaccess. Częstym przypadkiem jest hotlinkowanie obrazków, dlatego też na przykładzie plików typu JPG, GIF i PNG zaprezentuje jak można ustrzec się przed hotlinkiem.

W pliku .htaccess wpisujemy:

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?domena\.pl/ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/nohotlink.png [L]

Zakładamy, że nasza strona ma adres strona.pl 🙂 Druga linia mówi jeśli referrer (strona, która wyświetla Twoje obrazki) jest różny od strona.pl [NC] oznacza not case sensitive – nie rozróżniaj wielkości znaków. Trzecia linia oznacza jeśli referrer nie jest pusty. Ostatnia linia mówi: przekieruj wszystkie pliki JPG, JPEG, GIF, BMP i PNG do pliku /image/nohotlink.png. W pliku nothotlink.png można umieścić jakiś znaczek, że ktoś podkrada nasz transfer 🙂 [L] oznacza, że to polecenie jest już ostatnie i informuje serwer żeby nie wykonywał kolejnych.

Oczywiście zamiast podmiany obrazka na specjalny dla hotlinkujących, można zwrócić komunikat 403 Forbidden (brak dostępu). Wystarczy wtedy zamienić ostatnią linijkę kodu powyżej na następującą:

RewriteRule .*\.(jpe?g|gif|bmp|png)$ - [F]

Istnieje także możliwość zablokowania hotlinka dla konkretnej domeny. Przykładowo:

RewriteCond %{HTTP_REFERER} ^http://(.+\.)?strona1\.com/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://(.+\.)?strona2\.com/ [NC]

W tym przypadku zablokujemy przed hotlinikowaniem domeny strona1.com i strona2.com. [OR] oznacza lub.

Dedykowane strony błędów

Możliwość ustawienia własnych stron błędów serwera to chyba najprostsza czynność w .htaccess. O ile większość CMSów potrafi samodzielnie obsłużyć błąd 404 Nie znaleziono, o tyle pozostałe popularne błędy 403, 410, 500, 503 itp często pozostają domyślne z serwera, brzydkie i odstraszające użytkowników.

Tutaj kod jest prosty i nie wymaga dodatkowego komentarza. Wystarczy ustawić wcześniej przygotowane pliki błędów jak w przykładzie poniżej:

ErrorDocument 403 /403.html
ErrorDocument 500 /500.html

Blokowanie adresów IP

Blokowanie dostępu do strony potrafi być bardzo przydatne, szczególnie w sytuacjach kryzysowych. Miałem już kilka sytuacji, w których jakiś serwer „męczył” mój hosting lub spamował formularze na potęgę. W takiej sytuacji wydajność naszego serwera można ocalić blokując adres IP atakującego delikwenta:

Order Allow,Deny
Allow from all
Deny from 12.148.209.196
Deny from 87.207.112.205

Podałem tu dwa przykładowe IP, lista może być dłuższa.

Powyższa lista jest także niejako ściągawką najbardziej przydatnych ustawień w pliku .htaccess z punktu widzenia SEO. Pamiętaj proszę, że reguły mogą się różnić w Twoim przypadku, warto więc zrozumieć ich sens aby napisać własne.

Czy pominąłem coś istotnego? Daj proszę znać co warto dopisać do tej listy. Mam nadzieję, że będzie ona przydatna!

Średnia ocena: / 5. Ilość ocen:

Potrzebujesz pomocy z reklamą w Google?
Napisz do nas, przygotujemy bezpłatną wycenę.

Darmowa wycena