Utilia

Generator przekierowań .htaccess

Generuj przekierowania 301 i 302 dla .htaccess lub Nginx, wymuś HTTPS i www, przenieś domenę i popraw ukośniki, z wykrywaniem pętli i łańcuchów.

Serwer
Typ przekierowania
Adres kanoniczny
Ukośnik na końcu
Przenieś całą domenę

Najpierw zrób kopię zapasową obecnej konfiguracji i testuj z kodem 302, zanim przejdziesz na 301: przeglądarki zapamiętują stałe przekierowania.

Kontrola

Jak korzystać z generatora przekierowań .htaccess

  1. Wybierz Serwer: Apache (.htaccess) lub Nginx, a następnie Typ przekierowania: 301 – stałe lub 302 – tymczasowe.
  2. W polu Przekierowania stron wpisz jedno przekierowanie na linię: starą ścieżkę, spację i nowy URL, np. /stara-strona.html /nowa-strona/. Działa też tabulator, przecinek lub ->, a do tego możesz wkleić pełne stare adresy albo istniejące linie Redirect 301 /a /b.
  3. Opcjonalnie wpisz Twoja domena (opcjonalnie) (np. example.com), aby przekierowania stron prowadziły od razu do adresu docelowego.
  4. W sekcji Adres kanoniczny zaznacz Wymuś HTTPS i wybierz Wymuś www, Usuń www lub Zostaw www bez zmian. W sekcji Ukośnik na końcu zdecyduj, czy go dodawać, czy usuwać.
  5. Jeśli cała strona zmieniła adres, wypełnij Przenieś całą domenę, podając Stara domena i Nowy adres (bezwzględny URL), i zostaw zaznaczone Zachowaj ścieżkę, aby każda podstrona trafiła na swój odpowiednik.
  6. Przeczytaj sekcję Kontrola, a potem Kopiuj lub Pobierz reguły. Wczytaj przykład pokazuje kompletną konfigurację.

Jak działają wygenerowane reguły

Dla Apache narzędzie tworzy reguły mod_rewrite, zaczynając od jednego RewriteEngine On. Każda strona staje się regułą RewriteRule ze wzorcem zaczynającym się od ^/?, więc działa zarówno w pliku .htaccess (gdzie początkowy ukośnik jest usuwany), jak i w bloku <VirtualHost>. Kropki, nawiasy, plusy i inne znaki specjalne wyrażeń regularnych w ścieżkach są escapowane, a spacja zamienia się w \x20. W nowym adresie URL escapowane są $ i %, bo Apache odczytałby je jako odwołania wsteczne, a flaga NE zapobiega ponownemu kodowaniu adresu przez Apache.

RewriteRule nigdy nie widzi query stringa. Gdy stary adres go zawiera, np. /product.php?id=42, narzędzie dodaje linię RewriteCond %{QUERY_STRING} ^id=42$ i flagę QSD, dzięki czemu stare parametry są odrzucane zamiast kopiowane na nową stronę.

Reguły są ułożone tak, by uniknąć zbędnych przeskoków: najpierw przeniesienie domeny, potem przekierowania stron, następnie ukośnik na końcu, a na końcu HTTPS i www. HTTPS i www obsługuje jedna reguła, więc http://www.example.com trafia na https://example.com jednym przekierowaniem. Gdy domena jest znana, przekierowania stron i ukośnika od razu wskazują na docelowy adres HTTPS.

W Nginx HTTPS, www i przeniesienie domeny stają się osobnymi blokami server z return 301, a przekierowania stron – liniami rewrite do wklejenia w głównym bloku server. Wykonują się przed dopasowaniem location, więc mają też pierwszeństwo przed regułą ukośnika. Znak ? na końcu celu zapobiega doklejaniu przez Nginx starego query stringa tam, gdzie nie powinien.

Co jest sprawdzane

  • Strona przekierowująca sama na siebie lub dwie strony przekierowujące wzajemnie (pętla kończąca się błędem „zbyt wiele przekierowań”).
  • Łańcuchy typu A → B → C: skieruj A bezpośrednio na C, bo każdy dodatkowy przeskok spowalnia odwiedzających i marnuje budżet indeksowania.
  • Ten sam stary adres wpisany dwa razy – zadziała tylko pierwsza reguła.
  • Cel, który nie jest ani bezwzględnym adresem URL, ani ścieżką zaczynającą się od /, albo cel z http:// lub niewłaściwym www w twojej własnej domenie.
  • Ustawienie ukośnika, które ponownie przekierowałoby cel albo odesłało go do źródła.

Wszystko działa w twojej przeglądarce – nic, co wpiszesz, nie jest wysyłane na serwer.

Najczęściej zadawane pytania

301 czy 302?

Użyj 301, gdy zmiana jest trwała: wyszukiwarki przenoszą sygnały starej strony na nową i aktualizują indeks. Użyj 302 przy zmianach tymczasowych, np. przerwie technicznej lub krótkiej kampanii. Przeglądarki zapamiętują przekierowania 301, więc najpierw testuj z 302.

Gdzie umieścić plik .htaccess?

W katalogu głównym strony (często public_html lub www), obok index.php lub index.html. Pobrany plik nazywa się htaccess.txt; zmień nazwę na .htaccess albo wklej reguły na początku istniejącego pliku. Zachowaj kopię oryginału.

Dlaczego RewriteRule zamiast Redirect 301?

Linie Redirect pochodzą z mod_alias i wykonują się w innej fazie niż RewriteRule. Mieszanie obu w jednym pliku sprawia, że kolejność trudno przewidzieć. Korzystanie tylko z mod_rewrite utrzymuje wszystkie reguły w jednej przewidywalnej sekwencji i pozwala dopasowywać query stringi.

Po wymuszeniu HTTPS strona pokazuje „zbyt wiele przekierowań”. Dlaczego?

Za load balancerem, CDN lub proxy, które obsługuje HTTPS, Apache widzi każde żądanie jako zwykłe HTTP, więc %{HTTPS} jest zawsze wyłączone. Sprawdzaj wtedy przekazywany nagłówek, np. RewriteCond %{HTTP:X-Forwarded-Proto} !https, albo włącz przekierowanie w CDN.

Czy to narzędzie zmienia coś na moim serwerze?

Nie. Generuje jedynie tekst w twojej przeglądarce. Nic nie jest nigdzie wysyłane, a ty decydujesz, gdzie i jak zainstalować reguły.