SEO i .htaccess – Przydatne tricki do optymalizacji SEO

Blob

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.staradomena.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

Jest to więc przekierowanie wszystkich podstron 1=1 ze starej domeny na nową. Jeżeli jednak chcielibyśmy przekierować całą starą domenę na stronę główną nowej domeny (np. zmiana domeny oraz CMS jednocześnie), to kod może wyglądać następująco:

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

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.plhttps://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!

Opublikowano w Blog Redseo: , aktualizacja: