📞

Przekierowanie 301 w pliku (.htaccess) - jak to zrobić poprawnie

Przewiń do nagłówka

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

tworzenie pliku .htaccess w folderze nadrzędnym
Plik .htaccess powinien może być niewidoczny jeżeli korzystasz z połączenia FTP pierwszy raz

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

Rejestracja udana! :D
Witam ponownie.
Zasubskrybowano.
Twój link wygasł!
Sprawdź email, żeby się zalogować.
Zaktualizowanao informacje.
Aktualizacja danych nie powiodła się.