Jak ustawić przekierowanie 301 w htaccess — kompletny przewodnik
Pytanie o to, jak ustawić przekierowanie 301 w htaccess, wraca zawsze wtedy, gdy zmieniasz strukturę adresów, scalasz dwa serwisy albo porządkujesz archiwum starych wpisów. To, jak ustawić przekierowanie 301 w htaccess, decyduje o tym, czy moc odnośników i wypracowane pozycje przetrwają migrację, czy rozsypią się w serii błędów 404. Plik .htaccess to prosty plik konfiguracyjny serwera Apache, który czyta reguły linia po linii i stosuje je, zanim żądanie trafi do WordPressa, PrestaShop czy własnego skryptu PHP. Jedna źle postawiona gwiazdka potrafi zapętlić całą domenę, a jedna dobrze napisana reguła ratuje ruch wart tysiące złotych miesięcznie. W tym przewodniku znajdziesz gotowe składnie, porównanie kodów odpowiedzi, zasady współpracy przekierowań z certyfikatem szyfrującym oraz listę błędów, które najczęściej kończą się zgłoszeniem do działu wsparcia hostingu. Każdy przykład możesz wkleić do własnego pliku i przetestować na kopii serwisu, zanim zmiany zobaczą użytkownicy.
Czym jest kod 301 i czym różni się od pozostałych przekierowań
Kod 301 oznacza trwałe przeniesienie zasobu. Serwer informuje przeglądarkę oraz roboty wyszukiwarek, że stary adres już nie wróci, a jego następcą jest wskazany URL. Przeglądarki zapisują taką odpowiedź w pamięci podręcznej bardzo agresywnie, dlatego pomyłka w regule bywa uciążliwa jeszcze długo po jej naprawieniu i wymaga wyczyszczenia cache.
Kod 302 i 307 sygnalizują zmianę tymczasową. Używasz ich przy akcjach promocyjnych, testach A/B albo chwilowym wyłączeniu sekcji sklepu. Wyszukiwarka utrzymuje wtedy w indeksie stary adres i traktuje nowy jako zastępstwo. Zastosowanie 302 przy stałej migracji to klasyczny błąd, który potrafi zamrozić widoczność serwisu na wiele tygodni.
Osobną kategorią jest kod 410, czyli komunikat o świadomym usunięciu treści bez następcy. Sprawdza się, gdy kasujesz tysiące wygasłych ogłoszeń, dla których nie istnieje sensowny odpowiednik. Kierowanie takich adresów masowo na stronę główną generuje tak zwane miękkie 404 i rozmywa sygnały jakościowe całego katalogu.
| Kod | Znaczenie | Przekazuje moc linków | Typowe zastosowanie |
|---|---|---|---|
| 301 | przeniesienie trwałe | tak, praktycznie w całości | zmiana struktury URL, migracja domeny |
| 302 | przeniesienie tymczasowe | ograniczone | promocje, testy, prace serwisowe |
| 307 | tymczasowe z zachowaniem metody | ograniczone | formularze i żądania POST |
| 410 | zasób trwale usunięty | nie | wygasłe ogłoszenia bez odpowiednika |
Jak ustawić przekierowanie 301 w htaccess krok po kroku
Zacznij od kopii zapasowej pliku. Pobierz .htaccess przez FTP lub menedżer plików panelu, zapisz go pod nazwą htaccess-backup i dopiero wtedy edytuj oryginał. Reguły umieszczaj nad blokiem WordPressa oznaczonym komentarzem BEGIN WordPress, ponieważ kończy się on dyrektywą przechwytującą wszystkie pozostałe żądania serwisu.
Do dyspozycji masz dwa mechanizmy: prosty moduł mod_alias z dyrektywą Redirect oraz elastyczny mod_rewrite z regułami opartymi na wyrażeniach regularnych. Pierwszy wystarcza przy kilkunastu adresach, drugi obsługuje warunki, parametry i całe wzorce katalogów. Oba działają na typowym hostingu współdzielonym bez ingerencji administratora serwera.
Pojedynczy adres, katalog i cała domena
Najprostsza forma to jedna linia: Redirect 301 /stary-adres.html /nowy-adres/. Aby przenieść cały katalog wraz z podstronami, użyj RedirectMatch 301 ^/blog/(.*)$ /poradniki/$1. Dzięki temu adres z segmentem blog trafi do nowej sekcji z zachowaniem końcówki, więc setki wpisów obsłużysz jedną regułą zamiast osobnych wierszy.
Przy przenosinach całej witryny wskaż nową domenę i przekaż ścieżkę: RewriteRule (.*) https://nowadomena.pl/$1 [R=301,L]. Flaga L przerywa dalsze przetwarzanie reguł, a R=301 wymusza właściwy kod odpowiedzi. Bez flagi R serwer wykona ciche przepisanie adresu, którego wyszukiwarka w ogóle nie zobaczy jako przeniesienia.
Wymuszenie HTTPS oraz wersji z www lub bez
Serwis powinien odpowiadać pod jednym adresem kanonicznym. Cztery warianty — z www i bez, po HTTP i HTTPS — to cztery kopie tej samej treści, które rozbijają sygnały rankingowe i psują statystyki. Jedna para reguł porządkuje sytuację i sprowadza cały ruch do wybranej wersji docelowej.
RewriteEngine OnRewriteCond %{HTTPS} offRewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]RewriteCond %{HTTP_HOST} ^www.przyklad.pl [NC]RewriteRule (.*) https://przyklad.pl/$1 [R=301,L]
Kolejność ma znaczenie: najpierw szyfrowanie, potem ujednolicenie hosta. Odwrotny zapis tworzy łańcuch dwóch skoków, który spowalnia wczytywanie o kilkadziesiąt milisekund i rozmywa przekazywaną moc. Cel każdej reguły wskazuj zawsze bezpośrednio, nawet jeśli wymaga to rozpisania kilku dodatkowych warunków.
Hosting i serwer, czyli środowisko działania przekierowań
Plik .htaccess obsługuje wyłącznie Apache oraz LiteSpeed. Na czystym Nginksie te same reguły trzeba przepisać na dyrektywy return 301 w konfiguracji vhosta. Dlatego zanim zaczniesz planować migrację adresów, ustal, na jakim oprogramowaniu pracuje twój serwer — informacja znajduje się w panelu klienta lub w nagłówkach odpowiedzi.
Osoby zastanawiające się, jak wybrać hosting pod WordPress, powinny sprawdzić trzy parametry: obsługę mod_rewrite, wersję PHP oraz limit zapytań do bazy. Pakiety współdzielone kosztują zwykle 100–300 zł rocznie i w zupełności wystarczają blogowi z kilkoma tysiącami odsłon dziennie oraz kilkuset regułami przekierowań.
Pytanie, czym różni się VPS od hostingu współdzielonego, sprowadza się do izolacji zasobów. VPS w cenie 30–150 zł miesięcznie daje gwarantowane rdzenie, własny plik konfiguracyjny serwera i dostęp roota, co pozwala trzymać przekierowania w konfiguracji głównej zamiast w .htaccess. Taki zapis jest szybszy, bo Apache nie odczytuje pliku przy każdym żądaniu.

Gdy planujesz, jak przenieść stronę na inny hosting, wykonaj operację w ustalonej kolejności, aby uniknąć przerw w dostępności:
- skopiuj pliki i bazę danych na nowy serwer, nie ruszając jeszcze delegacji domeny;
- uruchom witrynę na adresie testowym i sprawdź działanie wszystkich reguł 301;
- obniż czas życia rekordów do 300 sekund na dobę przed zmianą;
- przełącz delegację i przez 48 godzin utrzymuj obie kopie serwisu w gotowości.
Domena, rekordy DNS i certyfikat SSL a poprawność reguł
Przekierowanie zadziała tylko wtedy, gdy domena poprawnie wskazuje na serwer. Zanim uznasz regułę za wadliwą, ustal, jak sprawdzić kto jest właścicielem domeny docelowej i czy abonament nie wygasł — publiczne bazy WHOIS oraz wyszukiwarka rejestru krajowego pokazują status wpisu, datę odnowienia i dane operatora.
Wygasła domena to najczęstsza przyczyna nagłego zniknięcia całego serwisu. Kwestia tego, jak przedłużyć domenę po wygaśnięciu, zależy od okresu karencji: przez pierwsze 30 dni odnowienie kosztuje tyle, co zwykła opłata, czyli około 90–130 zł za adres z końcówką .pl, a po tym terminie dochodzi opłata restytucyjna sięgająca kilkuset złotych.
Kolejny etap to jak skonfigurować rekordy DNS domeny pod nowy serwer. Rekord A wskazuje adres IP maszyny, rekord MX kieruje pocztę, a odpowiedź na pytanie, co to jest rekord CNAME, brzmi: to alias jednej nazwy na drugą, wykorzystywany przy subdomenach, sieciach CDN i panelach zewnętrznych usług.
Skoro reguły wymuszają HTTPS, certyfikat musi obsługiwać obie wersje nazwy. Odpowiedź na pytanie, jak zainstalować certyfikat SSL na serwerze, sprowadza się zwykle do kilku kliknięć w panelu, bo darmowy certyfikat SSL Let’s Encrypt odnawia się automatycznie co 90 dni. Komercyjne certyfikaty DV kosztują 50–300 zł rocznie i różnią się głównie gwarancją finansową.
Testowanie przekierowań i najczęstsze błędy wdrożeniowe
Nigdy nie sprawdzaj reguły w przeglądarce, w której wcześniej otwierałeś stary adres. Pamięć podręczna pokaże zapisaną wcześniej odpowiedź i wprowadzi cię w błąd. Użyj trybu prywatnego, polecenia curl z parametrem podglądu nagłówków albo zewnętrznego walidatora, który wyświetla pełny łańcuch skoków wraz z kodami.
Zdarza się, że wina leży po stronie łącza, a nie serwera. Zanim zgłosisz awarię, ustal, jak sprawdzić prędkość internetu rzetelnie: wykonaj trzy pomiary o różnych porach, po kablu, przy zamkniętych aplikacjach strumieniowych i z serwerem pomiarowym w kraju. Dopiero powtarzalny wynik ma wartość diagnostyczną.
Podobnie działa niestabilna sieć bezprzewodowa. Jeśli zastanawiasz się, jak wzmocnić sygnał WiFi w domu, przesuń router na środek mieszkania, unieś go nad podłogę i rozważ zestaw mesh za 400–900 zł. Kwestia, jak zmienić kanał WiFi w routerze, to kilka kliknięć w panelu pod adresem 192.168.1.1 — w paśmie 2,4 GHz wybierz kanał 1, 6 albo 11.
Najczęstsze pomyłki w samym pliku wyglądają natomiast tak:
- reguła dodana pod blokiem WordPressa, przez co nigdy nie zostaje wykonana;
- brak flagi L, powodujący kaskadowe stosowanie kolejnych wzorców;
- łańcuchy trzech i więcej skoków po stopniowych zmianach struktury;
- kierowanie wszystkich starych adresów na stronę główną zamiast na odpowiedniki tematyczne.
Jak sprawdzić, czy przekierowanie 301 działa poprawnie?
Najpewniejszą metodą jest odczyt nagłówków odpowiedzi. W terminalu wpisz polecenie curl z opcją wyświetlania nagłówków i śledzenia przekierowań, a następnie sprawdź, czy pierwsza linia zwraca status 301, a pole Location wskazuje dokładnie docelowy adres. Prawidłowa konfiguracja daje jeden skok zakończony kodem 200. Dwa lub trzy pośrednie adresy oznaczają łańcuch, który trzeba spłaszczyć przez wskazanie celu bezpośrednio w regule. Warto też uruchomić raport indeksowania w narzędziach dla webmasterów i obserwować, jak stare adresy stopniowo znikają z indeksu, a nowe zaczynają zbierać wyświetlenia. Pełne przepięcie sygnałów zajmuje zwykle od dwóch do ośmiu tygodni, zależnie od częstotliwości odwiedzin robota.
Czy przekierowanie 301 przekazuje moc linków i pozycje w wyszukiwarce?
Tak, przy poprawnym wdrożeniu przeniesienie trwałe przekazuje praktycznie całą wartość odnośników prowadzących do starego adresu. Kluczowe jest jednak zachowanie zgodności tematycznej: jeśli artykuł o konfiguracji serwera skierujesz na kartę produktu z innej kategorii, algorytm potraktuje taki ruch jak miękki błąd 404 i moc odnośników przepadnie. Zasada brzmi prosto — każdy stary adres dostaje najbliższy merytorycznie odpowiednik, a dopiero brak jakiegokolwiek sensownego celu uzasadnia kierowanie na kategorię nadrzędną. Unikaj też łańcuchów, ponieważ każde dodatkowe ogniwo wydłuża czas odpowiedzi i utrudnia robotowi dotarcie do właściwej treści. Mapę starych i nowych adresów przygotuj w arkuszu przed migracją, nie po niej.
Co zrobić, gdy plik .htaccess wywołuje pętlę przekierowań?
Komunikat o zbyt wielu przekierowaniach oznacza, że dwie reguły odsyłają do siebie nawzajem albo warunek nigdy nie zostaje spełniony. Pierwszy krok to przywrócenie kopii zapasowej pliku, dzięki czemu serwis natychmiast wraca do działania. Następnie dodawaj reguły pojedynczo, sprawdzając efekt po każdej zmianie. Najczęstszym źródłem problemu jest wymuszanie HTTPS na serwerze stojącym za serwerem pośredniczącym — wtedy zmienna sprawdzająca szyfrowanie zawsze zwraca wartość wyłączoną, więc trzeba oprzeć warunek na nagłówku przekazywanego protokołu. Drugą przyczyną bywa wtyczka przekierowań działająca równolegle z regułami w pliku. Wyłącz jedno z tych źródeł i pozostaw wyłącznie pojedynczy, spójny mechanizm obsługi adresów.
