Przekierowanie 301 to jedno z najważniejszych narzędzi SEO, które pozwala na trwałe przeniesienie jednej strony internetowej na inną. Jest kluczowe w przypadku zmiany struktury URL, migracji strony na nową domenę lub usuwania starych treści.
Poniżej znajdziesz szczegółowe wyjaśnienie i praktyczne przykłady tłumaczące temat przekierowań w .htaccess krok po kroku.
Co to jest przekierowanie 301?
Przekierowanie 301 (tzw. Moved Permanently) informuje przeglądarki i roboty wyszukiwarek, że dana strona została trwale przeniesiona pod nowy adres.
Dzięki temu:
- użytkownicy automatycznie trafiają na nową stronę,
- wartość SEO (PageRank) jest przenoszona na nowy adres,
- unika się błędów 404 i problemów z indeksowaniem strony.
1. Zacznij od stworzenia pliku .htaccess w folderze nadrzędnym dla danej domeny
Plik .htaccess
powinien znajdować się w głównym katalogu serwera (zwykle w public_html
). Można go utworzyć ręcznie poprzez edytor tekstowy i przesłać na serwer za pomocą klienta FTP lub skorzystać z menedżera plików w panelu hostingowym.
Jeśli plik .htaccess
już istnieje, wystarczy go edytować.

.htaccess
powinien może być niewidoczny jeżeli korzystasz z połączenia FTP pierwszy raz1.1 Jakie są najczęstsze problemy przy tworzeniu pliku .htaccess?
W swojej dotychczasowej karierze napotkałem kilka błędów, które uniemożliwiały dokonanie poprawnych przekierowań. Poniżej opisałem te najbardziej prawdopodobne.
- Plik nie jest widoczny –
.htaccess
to plik ukryty domyślnie. Więc, aby go zobaczyć, włącz opcję „Pokaż ukryte pliki” w menedżerze plików podczas połączenia FTP. - Brak uprawnień do zapisu – plik może wymagać ustawienia odpowiednich uprawnień (najczęściej
644
). - Błędna nazwa pliku – upewnij się, że plik nosi dokładnie nazwę
.htaccess
, bez dodatkowych rozszerzeń lub błędów składniowych. - Serwer nie obsługuje plików .htaccess – niektóre serwery mogą mieć wyłączoną obsługę
.htaccess
. W takim przypadku konieczna może być zmiana konfiguracji Apache.
2. Zacznij od dodania - RewriteEngine On
Każdy plik .htaccess
do poprawnego funkcjonowania wymaga aktywacji modułu mod_rewrite
, który pozwala na stosowanie reguł przepisywania URL-i. Aby to zrobić, na początku pliku dodaj następującą linijkę:
RewriteEngine On
Jest to niezbędne, jeśli zamierzasz korzystać z reguł RewriteRule
i RewriteCond
do przekierowań. Jeśli ta linijka nie zostanie dodana, przekierowania nie będą działać.
Kolejne linijki możesz dodawać jeden po drugim po twardej spacji.
2.1 Przykładowy plik .htaccess
# Włączenie modułu przepisywania URL
RewriteEngine On
# Przekierowanie z HTTP na HTTPS
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# Przekierowanie konkretnej strony
Redirect 301 /stara-strona.html /nowa-strona.html
# Blokowanie dostępu do konkretnego pliku
<Files "config.php">
Order Allow,Deny
Deny from all
</Files>
# Ochrona przed hotlinkingiem (blokowanie używania obrazków na innych stronach)
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https://(www\.)?mojastrona\.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ - [F]
# Ustawienie strony błędu 404
ErrorDocument 404 /blad-404.html
# Blokowanie dostępu do katalogów bez pliku index
Options -Indexes
# Ustawienie czasu cache dla obrazków i plików statycznych
<FilesMatch "\.(jpg|jpeg|png|gif|css|js)$">
Header set Cache-Control "max-age=31536000, public"
</FilesMatch>
# Blokowanie konkretnego adresu IP
Deny from 192.168.1.100
# Zezwolenie na dostęp tylko dla określonych IP
<Limit GET POST>
Order Deny,Allow
Deny from all
Allow from 123.456.789.000
</Limit>
3. Jak dodać przekierowanie 301 w pliku .htaccess?
Przekierowanie 301 można zrealizować na kilka sposobów, w zależności od tego, czy chcemy przekierować pojedynczy adres URL, całą domenę czy też wymusić korzystanie z HTTPS.
Poniżej znajdziesz kilka przykładów, jak to zrobić poprawnie.
3.1 Przekierowanie jednej strony na inną
Jeśli chcesz przekierować pojedynczy adres URL, dodaj do .htaccess
następujący kod:
Redirect 301 /stara-strona.html https://www.example.com/nowa-strona.html
To oznacza, że każde wejście na example.com/stara-strona.html
zostanie przekierowane na example.com/nowa-strona.html
.
Przekierowanie 301 możesz dokonać także za pomocą RewriteRule
RewriteRule ^stara-strona/ https://www.example.com/nowa-strona.html [R=301,L]
UWAGA!
W zależności od konfiguracji hostingu oraz wprowadzonych przez nas reguł Redirect 301 bądź RewriteRule nie powinno być stosowane jednocześnie.
Zdecyduj się na jedną z powyższych opcji. Jeżeli zastosowałeś już w swoim pliku RewriteCond to użyj także RewriteRule.
3.2 Przekierowanie całej domeny na nową domenę
Gdy przenosisz stronę na nowy adres, użyj tego kodu:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^stara-domena\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.stara-domena\.com$
RewriteRule ^(.*)$ https://www.nowa-domena.com/$1 [R=301,L]
Ten zapis przekieruje wszystkie podstrony ze starej domeny na ich odpowiedniki w nowej domenie.
3.3 Przekierowanie HTTP na HTTPS
Jeśli chcesz wymusić bezpieczne połączenie HTTPS, dodaj ten fragment:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://nazwadomeny.pl/$1 [R=301,L]
3.4 Przekierowanie bez „www” na adres z „www” (lub odwrotnie)
Z „www” na wersję bez „www”:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?nazwadomeny\.pl [NC]
RewriteRule (.*) https://nazwadomeny.pl/$1 [R=301,L]
Z wersji "bez www” na „www”:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
4. Najczęstsze błędy i jak ich unikać
- Błędna składnia – upewnij się, że reguły są poprawnie zapisane.
- Zapętlenie przekierowań – sprawdź, czy nie przekierowujesz adresu na samego siebie.
- Brak uprawnień do edycji pliku – zmień uprawnienia pliku
.htaccess
na 644 lub 755. - Nieprawidłowa kolejność reguł – reguły muszą być zapisane w odpowiedniej kolejności, np. najpierw wymuszanie HTTPS, potem przekierowania stron.
5. Jak sprawdzić, czy przekierowanie działa?
Po zapisaniu zmian w .htaccess
sprawdź działanie przekierowania, można do tego użyć narzędzia do sprawdzania statusu HTTP, np. whatsmydns.net/redirect-checker.
Podsumowanie
Przekierowanie 301 w .htaccess
to potężne narzędzie do zarządzania ruchem na stronie i SEO. Wystarczy kilka linijek kodu, aby skutecznie przekierować użytkowników i wyszukiwarki na nowy adres. Pamiętaj o testowaniu ustawień, aby uniknąć problemów z dostępnością strony.