Przekierowanie 301 w .htaccess bez błędów i pętli

3 września 2026

Znak "ONE WAY" w lewo, jak przekierowanie 301 htaccess.

Spis treści

Zmiana adresu strony bez właściwego przekierowania może skończyć się błędem 404, utratą ruchu i zerwanymi linkami. Przekierowanie 301 w pliku .htaccess pozwala bezpiecznie wskazać nowy adres użytkownikom oraz robotom wyszukiwarek. Pokażę, gdzie umieścić regułę, jak dobrać właściwą składnię, jak obsłużyć HTTPS i zmianę domeny oraz jak sprawdzić, czy wszystko działa poprawnie.

Najważniejsze zasady konfiguracji przekierowań 301

  • 301 oznacza trwałą zmianę adresu i powinno być używane wtedy, gdy stary URL nie wróci.
  • Plik .htaccess umieść w katalogu głównym strony, zwykle tam, gdzie znajduje się plik index.
  • Do prostych zmian wystarczy Redirect 301, a do reguł warunkowych użyj mod_rewrite.
  • W pliku .htaccess wzorzec RewriteRule nie zaczyna się od ukośnika.
  • Po wdrożeniu sprawdź kod odpowiedzi, łańcuchy przekierowań i działanie starego adresu w kilku wariantach.

Ludzie budują nowy adres URL, sugerując przekierowanie 301 htaccess. Znaki drogowe i pachołki wskazują na zmiany.

Czym jest przekierowanie 301 i kiedy ma sens

Kod HTTP 301 informuje przeglądarkę i wyszukiwarkę, że zasób został przeniesiony na stałe. Użytkownik trafia wtedy automatycznie na nowy adres, a robot może potraktować stronę docelową jako właściwy odpowiednik starej.

Najczęściej stosuję takie przekierowanie przy zmianie adresu artykułu, usunięciu starej podstrony, migracji domeny, przejściu z HTTP na HTTPS albo uporządkowaniu wersji z przedrostkiem www. Dobrze dobrany nowy adres powinien odpowiadać treścią staremu, ponieważ przekierowanie przypadkowej strony na stronę główną zwykle daje słabszy efekt dla użytkownika i SEO.

301 nie jest tym samym co przekierowanie 302. To drugie oznacza sytuację tymczasową, na przykład krótką przerwę techniczną lub test. Jeśli użyjesz 302 podczas trwałej zmiany URL, możesz opóźnić przeniesienie sygnałów związanych ze starą stroną.

Kiedy nie stosować kodu 301

Nie przekierowuj automatycznie każdej usuniętej podstrony na stronę główną. Jeżeli nie istnieje sensowny zamiennik, lepszym rozwiązaniem może być poprawna odpowiedź 404 albo 410. Przekierowanie powinno prowadzić do treści możliwie blisko związanej ze starym adresem, a nie tylko do dowolnego miejsca w serwisie.

Gdzie umieścić regułę w pliku .htaccess

Plik .htaccess jest konfiguracyjnym plikiem serwera Apache działającym dla konkretnego katalogu i jego podkatalogów. W praktyce najczęściej znajduje się w katalogu głównym witryny, obok pliku index.php lub index.html.

Zanim coś zmienię, zawsze pobieram kopię pliku i sprawdzam, czy hosting korzysta z Apache albo LiteSpeed z obsługą reguł Apache. Na serwerze Nginx składnia .htaccess nie zadziała, ponieważ Nginx korzysta z własnej konfiguracji.

  1. Połącz się z serwerem przez menedżer plików, FTP albo SSH.
  2. Odszukaj plik .htaccess w katalogu strony.
  3. Wykonaj kopię zapasową przed edycją.
  4. Dodaj regułę przed ogólnymi regułami CMS, jeśli plik zawiera konfigurację WordPressa.
  5. Zapisz plik i od razu przetestuj konkretny stary adres.

Jeśli pliku nie widać, włącz pokazywanie ukrytych plików. Kropka na początku nazwy oznacza, że system lub klient FTP może domyślnie go ukrywać. Brak możliwości działania reguł może też wynikać z wyłączonego modułu mod_rewrite albo ograniczeń ustawionych przez administratora serwera.

Najprostsze reguły przekierowania 301 w praktyce

Pojedynczy adres na nowy adres

Do jednej prostej zmiany można użyć dyrektywy Redirect. W tym przypadku podajesz ścieżkę starego zasobu i ścieżkę nowego zasobu.

Redirect 301 /stary-adres /nowy-adres

To dobre rozwiązanie, gdy nie potrzebujesz warunków, wyrażeń regularnych ani kontroli nad parametrami zapytania. Jest czytelne i łatwe do utrzymania, dlatego przy pojedynczych adresach nie komplikowałbym konfiguracji przez rozbudowane reguły.

Przekierowanie z użyciem mod_rewrite

Jeżeli potrzebujesz większej kontroli, włącz silnik przepisywania adresów i użyj RewriteRule.

RewriteEngine On
RewriteRule ^stary-adres/?$ /nowy-adres [R=301,L]

Symbol ^ oznacza początek wzorca, a $ jego koniec. Fragment /?$ pozwala obsłużyć adres zarówno ze końcowym ukośnikiem, jak i bez niego. Flaga R=301 wymusza przekierowanie, natomiast L mówi Apache, aby zakończył przetwarzanie reguł po znalezieniu dopasowania.

W pliku .htaccess nie dodawaj ukośnika przed wzorcem RewriteRule. Poprawna forma to ^stary-adres, a nie ^/stary-adres. Ten szczegół jest częstą przyczyną sytuacji, w której reguła wygląda poprawnie, ale nie reaguje.

Przekierowanie całej struktury katalogu

Przy zmianie nazw kategorii lub folderów można zachować końcową część ścieżki.

RewriteEngine On
RewriteRule ^stare-artykuly/(.*)$ /poradnik/$1 [R=301,L]

Jeżeli ktoś odwiedzi adres zaczynający się od /stare-artykuly/, jego dalsza ścieżka zostanie przeniesiona do /poradnik/. Wzorzec (.*) przechwytuje pozostałą część adresu, a $1 wstawia ją w nowym miejscu.

Usuwanie lub zachowanie parametrów

Parametry po znaku zapytania, na przykład filtry i identyfikatory kampanii, mogą zostać zachowane podczas przekierowania. Jeżeli chcesz je usunąć, w nowszym Apache możesz użyć flagi QSD.

RewriteEngine On
RewriteRule ^stara-oferta$ /oferta [R=301,L,QSD]

Bez QSD serwer często przekazuje istniejący query string dalej. To przydatne przy parametrach śledzących, ale nie zawsze pożądane przy starych identyfikatorach produktów. Zanim usuniesz parametry, sprawdź, czy aplikacja nie używa ich do wyświetlania właściwej treści.

HTTPS, www i zmiana domeny bez pętli

Przy migracji całej witryny nie wystarczy jedna reguła dla pojedynczej podstrony. Trzeba ustalić docelową wersję adresu, na przykład HTTPS bez www, a potem kierować pozostałe warianty bezpośrednio do niej.

Największe ryzyko stanowi pętla przekierowań. Może powstać wtedy, gdy jedna reguła wymusza HTTPS, druga dodaje www, a trzecia je usuwa. Zamiast trzech kolejnych skoków lepiej przygotować warunek, który kieruje każdy niepożądany wariant od razu do wersji kanonicznej.

Przy zmianie domeny przygotuj mapę adresów. Dla małego serwisu może to być tabela zawierająca kilkanaście lub kilkadziesiąt URL-i, a przy większej migracji warto wygenerować ją automatycznie i przetestować partiami.

Sytuacja Docelowa reguła Na co uważać
Zmiana pojedynczego slugu Stara ścieżka na dokładny nowy adres Nie kieruj automatycznie na stronę główną
Zmiana katalogu Zachowanie końcówki adresu przez $1 Sprawdź wszystkie podkatalogi
Przejście na HTTPS Każdy wariant HTTP na odpowiednik HTTPS Zweryfikuj certyfikat i zasoby mieszane
Zmiana domeny Stary host na konkretny nowy host Unikaj kilku pośrednich przekierowań

Po migracji zaktualizuj również linki wewnętrzne, mapę XML, adres kanoniczny i ustawienia analityki. 301 powinno być zabezpieczeniem dla starych odnośników, a nie powodem, by pozostawiać w serwisie setki nieaktualnych linków.

Najczęstsze błędy i sposoby ich diagnozowania

Reguła znajduje się w złym miejscu

Reguła umieszczona po bardzo ogólnym przekierowaniu może nigdy nie zostać wykonana. W pliku z konfiguracją CMS szczególnie ważna jest kolejność. Konkretne przekierowania dodaj przed regułami, które przechwytują całą witrynę.

Powstaje łańcuch przekierowań

Łańcuch wygląda tak: stary adres prowadzi do pośredniego, a dopiero on do finalnego. Jedno przekierowanie zwykle nie stanowi problemu, ale kilka kolejnych zwiększa czas ładowania i utrudnia robotom interpretację migracji. Zawsze kieruj stary URL bezpośrednio do końcowego adresu.

Pojawia się błąd 500

Błąd 500 najczęściej oznacza literówkę, niedozwoloną dyrektywę albo niepoprawną składnię. Przywróć kopię pliku, sprawdź logi serwera i dodawaj reguły pojedynczo. Nie testuj kilku zmian naraz, bo później trudno ustalić, która z nich wywołała problem.

Przeglądarka pokazuje stare zachowanie

Przekierowania 301 mogą być zapamiętywane przez przeglądarkę i warstwy cache. Sprawdź adres w oknie prywatnym, przez inne połączenie albo narzędziem wysyłającym żądanie HTTP. Samo odświeżenie strony nie zawsze wystarczy.

Przeczytaj również: Jak zaprojektować skuteczny pop-up bez irytowania użytkowników

Jak sprawdzić kod odpowiedzi

Test powinien obejmować kod odpowiedzi starego adresu, nagłówek Location oraz końcowy kod nowej strony. Prawidłowy scenariusz to 301, jeden cel i odpowiedź 200 na stronie docelowej. Sprawdź też wersję z końcowym ukośnikiem, bez niego oraz z parametrami, jeśli wcześniej występowały.

Jak wdrożyć zmianę bez utraty ruchu

Przed edycją przygotuj listę starych adresów z analityki, logów serwera, mapy witryny i narzędzi dla webmasterów. Przy większej migracji przypisz każdemu staremu URL-owi jeden nowy odpowiednik. Taka mapa szybko pokazuje, gdzie brakuje celu albo gdzie kilka starych stron kieruje do jednego, niepasującego miejsca.

Po wdrożeniu obserwuj błędy 404, spadki ruchu i raporty indeksowania przez kilka tygodni. Nie usuwaj pochopnie poprawnych przekierowań tylko dlatego, że stary adres nie pojawia się już często w statystykach. Może nadal przynosić wejścia z dawnych publikacji, linków zewnętrznych lub zapisanych zakładek.

W praktyce najlepiej działa prosty proces:

  1. Zidentyfikuj stare adresy i wybierz ich najlepsze odpowiedniki.
  2. Zrób kopię pliku .htaccess.
  3. Dodaj najpierw kilka reguł testowych.
  4. Sprawdź statusy HTTP i brak pętli.
  5. Rozszerz konfigurację na całą migrację.
  6. Monitoruj błędy i popraw reguły, które tworzą łańcuchy.

Jeżeli strona stoi za CDN-em albo ma włączoną pamięć podręczną hostingu, wyczyść cache po zapisaniu zmian. Inaczej możesz testować starą wersję konfiguracji i wyciągnąć błędny wniosek, że przekierowanie nie działa.

Mała reguła, duża odpowiedzialność za adresy

Najbezpieczniejsze przekierowanie 301 jest konkretne, bezpośrednie i prowadzi do strony o podobnym znaczeniu. Do jednej zmiany wystarczy prosta dyrektywa, a mod_rewrite zostaw na przypadki wymagające warunków, przechwytywania ścieżek lub obsługi parametrów.

Sam wpis w .htaccess zajmuje kilka sekund, ale dobra migracja wymaga mapy adresów, kopii zapasowej i testów. To właśnie te trzy elementy najczęściej decydują, czy zmiana URL-i będzie spokojną porządkową korektą, czy źródłem niepotrzebnych problemów z ruchem i indeksowaniem.

FAQ - Najczęstsze pytania

Kod 301 stosuje się przy trwałej zmianie adresu, gdy stary URL nie powinien już wrócić. Kod 302 pasuje do sytuacji tymczasowych, takich jak krótka przerwa techniczna lub test.

Plik .htaccess najczęściej znajduje się w katalogu głównym strony, obok pliku index.php lub index.html. Konkretne reguły warto dodać przed ogólnymi regułami CMS, a przed edycją wykonać kopię zapasową.

Redirect 301 wystarczy do pojedynczego, prostego przekierowania, na przykład z /stary-adres na /nowy-adres. RewriteRule z mod_rewrite daje większą kontrolę i pozwala stosować warunki, wyrażenia regularne, zachowywać fragmenty ścieżki oraz usuwać parametry przez flagę QSD.

Sprawdź kod odpowiedzi starego adresu, nagłówek Location oraz końcowy kod strony docelowej. Prawidłowy wynik to 301, jeden bezpośredni cel i odpowiedź 200, także dla wersji z ukośnikiem, bez niego oraz z parametrami, jeśli wcześniej występowały.

Oceń artykuł

Ocena: 0.00 Liczba głosów: 0

Tagi:

przekierowania .htaccess mod_rewrite https apache

Udostępnij artykuł

Aleks Dudek

Aleks Dudek

Aleks Dudek to moje imię i nazwisko, a od 15 lat zgłębiam tajniki nowoczesnego marketingu, SEO i sztucznej inteligencji. Moja przygoda z tymi dziedzinami zaczęła się od fascynacji tym, jak technologia może rewolucjonizować sposób, w jaki marki docierają do swoich odbiorców i budują z nimi relacje. Na wmalinowymtyglu.pl dzielę się wiedzą w sposób przystępny, porównując dostępne narzędzia i wyjaśniając złożone koncepcje tak, by każdy mógł je zrozumieć i wykorzystać w praktyce. Moim celem jest dostarczanie rzetelnych, aktualnych i przede wszystkim użytecznych informacji, które pomogą Ci nawigować w dynamicznie zmieniającym się świecie marketingu cyfrowego.

Napisz komentarz