Konfiguracja pliku .htaccess a pozycjonowanie SEO- triki i FAQ

plik konfiguracyjny htaccess

Czym jest .htaccess?

Jak zapewne niektórzy zdają sobie sprawę, .htaccess (Hypertext Access) jest plikiem konfiguracyjnym, stosowanym na serwerach WWW Apache. Dzięki niemu możemy określić bazowe ustawienia serwera. Innymi słowy – plik .htaccess może być wykorzystywany do zmiany zachowań serwera. W tym pliku możemy dodawać i edytować kody, które odpowiedzialne są za poszczególne funkcje. Każda z nich to linijka kodu, która wydaje polecenia serwerowi.

Jak stworzyć plik .htaccess?

Stworzenie tego pliku jest naprawdę bardzo proste. Wystarczy, że wejdziemy w katalog, na którym znajdują się wszystkie pliki naszej strony internetowej, a następnie stworzymy plik o rozszerzeniu .htaccess. Jego edycja również jest tak samo prosta – możemy użyć do niej zwykłego notatnika. Na początku w pliku powinniśmy wkleić poniższy kod:

<Files .htaccess>
order allow,deny
deny from all

</Files>
Options All -Indexes

To jeden z podstawowych przykładów tego pliku i będzie nam potrzebny jedynie na początku. Do czego? Wpisany kod zabezpiecza nasz plik .htaccess przed podglądem z zewnątrz, a także zakazuje listowania plików w folderze, gdzie znajduje się nasza strona. Pamiętajmy również, by zrobić jego kopię zapasową na wszelki wypadek.

Dlaczego plik .htaccess przydaje się w pozycjonowaniu?

Powiedzieliśmy już sobie, jak stworzyć plik i jak go zabezpieczyć. Warto teraz wymienić jego najważniejsze funkcje, które wpłyną nie tylko na poprawę bezpieczeństwa witryny, ale także na SEO. Należy tu m. in. ustawianie przekierowań czy kompresja GZIP. Takie funkcje nie tylko ułatwiają użytkownikom, a także wyszukiwarkom łatwiejsze odnalezienie witryny i w przypadku botów – szybszą indeksację. Warto również zwrócić uwagę na to, że dzięki przekierowaniom unikamy duplicate content, który może obniżyć naszą pozycję. Z kolei kompresja GZIP pomoże nam przyspieszyć wczytywanie się strony.
Przyjazne linki

Przyjazne adresy stron są ważnym elementem, jeśli mówimy o funkcjonalnej nawigacji. Przyjazne, czyli takie, które są odpowiednie zarówno dla użytkowników, jak i robotów wyszukiwarki. Po pierwsze – powinny być łatwe do zapamiętania, zapisania i przeczytania, a robot wyszukiwarki powinien mieć możliwość zdefiniowania na ich podstawie struktury serwisu oraz zaindeksowania strony. Przyjazne linki możemy łatwo ustawić za pomocą modułu rewrite, czyli mod_rewrite. Jeśli np. nasze linki wyglądają następująco: „/index.php?strona=akwaria„, możemy z łatwością zmienić je na „/strona/akwaria/” lub po prostu „/akwaria/„. Mimo, że linki zmienią postać, to cały czas będziemy odwoływać się do ich pierwotnej postaci. Taka mała różnica, że robi to serwer w sposób niewidoczny dla innych. Wówczas wiersze poleceń wyglądają następująco:

# inicjujemy rewrite engine
RewriteEngine on

# dla przykładu z www.strona.pl/strona/akwaria/
RewriteRule ^strona/([^/.]+)/?$ index.php?strona=$1 [L]

# dla przykładu z www.strona.pl/akwaria/
RewriteRule ^/([^/.]+)/?$ index.php?strona=$1 [L]

Gdy przepisujemy URL’e w taki sposób, jak napisano wyżej, musimy pamiętać o slashach na końcu adresu. By mieć pewność, że się tam pojawią, należy zastosować następujący zapis:

# nie dodajemy nic jeśli żądany plik istnieje
RewriteCond %{REQUEST_FILENAME} !-f

# sprawdzamy czy dany URL nie ma slasha na końcu
RewriteCond %{REQUEST_URI} !(.*)/$

# jeśli nie ma, przepisujemy URL z przekierowaniem 301
RewriteRule ^(.*)$
://%{HTTP_HOST}/$1/ [L,R=301]

Jeśli chcemy stosować dopisywanie ukośnika na końcu wraz z przyjaznymi linkami, zapis dotyczący slasha musi pojawić się w pliku .htaccess na początku.

htaccess redirects - przekierowania 301

Przekierowanie z www na bez www

Mało ludzi zdaje sobie sprawę z tego, że adresy:

http://www.strona.pl/
http://strona.pl
https://www.strona.pl
https://strona.pl

są odczytywane przez roboty wyszukiwarek jako odrębne domeny. Brak odpowiednich przekierowań może przyczynić się do problemów z duplicate content, czyli powielaniem treści, o czym możecie przeczytać tutaj. By pozbyć się możliwych problemów z duplikacją treści, powinniśmy wybrać tylko jeden adres i ustawić przekierowanie na drugim. Jak tego dokonać?

RewriteEngine on

# przekierowanie dla przykładu z www na bez www
RewriteCond %{HTTP_HOST} ^www.strona.pl$ [NC] RewriteRule ^(.*)$ http://strona.pl/$1 [R=301,L]

# przekierowanie dla przykładu z bez www na www
RewriteCond %{HTTP_HOST} !^www.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

Dedykowane strony dla błędów

Błędy na stronie zdarzają się często – najczęstszym z nich jest błąd 404, czyli brak strony. Plik .htacces pozwala nam na zdefiniowanie unikalnej strony z odpowiednim komunikatem typu „Podana podstrona nie istnieje w serwisie”, wykonuje się to poprzez:

# dla błędu 404
ErrorDocument 404 /blad404.html
# dla błędu 500
ErrorDocument 500 /blad500.html

htaccess kompresja GZIP

Kompresja GZIP

GZIP jest programem, który ma służyć bezstratnej kompresji danych. Umożliwia to oczywiście szybsze wczytywanie się strony. Wiele serwerów ma już nałożoną kompresję GZIP i wówczas nie potrzebujemy nowego kodu. Sprawdzimy to na stronie GIDNetwork. Jeśli jednak nie mamy kompresji, musimy skorzystać z następujących kodów:

<ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*

</ifModule>

Expires – czas wygaśnięcia cache?

Kolejną ważną rzeczą jest zapamiętywanie plików z naszej strony przez przeglądarkę tylko na określony czas. Oczywiście lepiej ustawić dłuższy czas, by przeglądarka nie musiała za każdym razem pobierać plików ze strony. Przykładowo pliki graficzne mają być nieodświeżane przez 1 miesiąc, w tym celu wpisujemy w .htaccess:

<IfModule mod_expires.c>
ExpiresActive on
ExpiresDefault „access plus 1 month”
ExpiresByType text/cache-manifest „access plus 0 seconds”
ExpiresByType text/html „access plus 0 seconds”
ExpiresByType text/xml „access plus 0 seconds”
ExpiresByType application/xml „access plus 0 seconds”
ExpiresByType application/json „access plus 0 seconds”
ExpiresByType image/x-icon „access plus 1 week”
ExpiresByType image/gif „access plus 1 month”
ExpiresByType image/png „access plus 1 month”
ExpiresByType image/jpg „access plus 1 month”
ExpiresByType image/jpeg „access plus 1 month”
ExpiresByType text/x-component „access plus 1 month”
ExpiresByType font/truetype „access plus 1 month”
ExpiresByType font/opentype „access plus 1 month”
ExpiresByType application/x-font-woff „access plus 1 month”
ExpiresByType image/svg+xml „access plus 1 month”
ExpiresByType application/vnd.ms-fontobject „access plus 1 month”
ExpiresByType text/css „access plus 1 month”
ExpiresByType application/javascript „access plus 1 month”
ExpiresByType text/javascript „access plus 1 month”

<IfModule mod_headers.c>
Header append Cache-Control „public”
</IfModule>
</IfModule>

htaccess https SSL

Protokół HTTPS dla wybranych podstron witryny

Jeśli niektóre z naszych podstron wymagają protokołu HTTPS. Możemy w prosty sposób go ustawić za pomocą poniższego kodu:

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} ^/secure/(.*)$ [NC]

RewriteRule ^(.*)$ https://strona.pl/$1 [R=301,L]

Wówczas pierwotny adres:
http://strona.com/formularz-logowania

Przepisany zostanie na adres URL z HTTPS:
https://strona.com/formularz-logowania

Oczywiście to jedynie część z wielu funkcji, jakie możemy uzyskać edytując plik .htaccess. Jeśli macie problemy z zapamiętaniem kolejnych wierszy poleceń albo nie wiecie w ogóle, jakiego kodu użyć, by wprowadzić daną funkcję, skorzystajcie z generatora plików .htaccess, który znajduje się np. na stronie: http://htaccess.lapti.pl/.

htaccess 301 redirect

Autor: Wojciech Kłodziński

Sprawdź już teraz ile kosztuje pozycjonowanie

Autor: Wiktor Pacer

Programista