Przekierowania – wszystko co musisz wiedzieć o przekierowaniach 301, 302, 307, 308 i innych

Opublikowane:

Przekierowania są kluczowym narzędziem w zarządzaniu stronami internetowymi, służącym do kierowania użytkowników i robotów wyszukiwarek z jednego adresu URL na inny. Dzięki nim można efektywnie zarządzać zmianami w strukturze strony, unikać problemów z duplikacją treści, a także optymalizować doświadczenia użytkowników. Przekierowania są szczególnie przydatne w różnych scenariuszach, takich jak zmiana domeny, aktualizacja zawartości strony, czy poprawa organizacji treści. Mogą pomóc w utrzymaniu integralności linków, które prowadzą do starych lub usuniętych zasobów, oraz w optymalizacji SEO, zapewniając, że wszystkie odwołania do strony trafiają tam, gdzie powinny. W artykule omówimy, jak efektywnie wykorzystać różne typy przekierowań, aby poprawić zarządzanie stroną i zwiększyć jej widoczność w wyszukiwarkach.

Spis treści artykułu o przekierowaniach

Czym jest przekierowanie 301?

Przekierowanie 301 to istotne narzędzie w zarządzaniu stronami internetowymi, które informuje przeglądarki i wyszukiwarki, że strona internetowa została na stałe przeniesiona do nowego adresu. Działa to jako trwałe przekierowanie, co oznacza, że wszyscy odwiedzający stronę będą automatycznie kierowani do nowej lokalizacji bez potrzeby dodatkowych działań z ich strony.

W kontekście SEO, przekierowanie 301 jest nieocenione. Pozwala ono na przeniesienie „mocy” SEO, czyli wartości linków i rankingu ze starego adresu URL na nowy. Dzięki temu, nie tracisz korzyści z linków prowadzących do starej strony, co może zapobiec utracie pozycji w wynikach wyszukiwania. Co więcej, przekierowanie 301 pomaga uniknąć błędów 404, czyli sytuacji, gdy użytkownik trafia na nieistniejącą stronę, co mogłoby negatywnie wpłynąć na doświadczenie użytkowników i wyniki SEO.

Jeśli zmieniasz nazwę domeny lub strukturę URL swojej witryny, przekierowanie 301 zapewnia, że odwiedzający zostaną prawidłowo przekierowani na nową lokalizację, co jest kluczowe dla utrzymania ciągłości dostępu do treści. To również przydatne narzędzie przy przenoszeniu treści lub aktualizacji strony.

Dla osób mniej zaawansowanych, implementacja przekierowania 301 może być prostsza niż się wydaje. Dla stron działających na serwerach Apache, można to zrobić za pomocą pliku .htaccess, który znajduje się w katalogu głównym witryny. Wystarczy dodać odpowiedni kod, który przekieruje starą stronę do nowej, na przykład:

Redirect 301 /stary-adres https://twojadomena.pl/nowy-adres

Dla użytkowników systemów zarządzania treścią, takich jak WordPress czy Joomla, istnieją wtyczki i funkcje, które umożliwiają łatwe dodanie przekierowań 301 bez potrzeby edytowania plików konfiguracyjnych. Na przykład, w WordPressie można skorzystać z wtyczki „Redirection” lub „Yoast SEO”, które oferują prosty sposób zarządzania przekierowaniami.

Jeżeli korzystasz z takich narzędzi online, które pomagają w tworzeniu przekierowań, pamiętaj, aby mieć podstawową wiedzę na temat zarządzania serwerem. Po dodaniu przekierowań warto je przetestować, odwiedzając starą stronę i sprawdzając, czy jest ona poprawnie przekierowywana na nowy adres. Monitorowanie efektów w narzędziach dla webmasterów, takich jak Google Search Console, pomoże upewnić się, że przekierowania są prawidłowo rozpoznawane przez wyszukiwarki.

Przekierowanie 301 jest kluczowym elementem skutecznego zarządzania stroną internetową i SEO, zapewniając płynne przejście do nowej lokalizacji oraz utrzymanie dobrego doświadczenia użytkownika.

strzałka namalowana na drzewie która wskazuje kierunek dokładnie tak jak przekierowania 301 oraz 302 wskazują drogę przeglądarkom i robotom Google
Photo by Markus Spiske on Pexels.com

Czym jest przekierowanie 302

Przekierowanie 302 to tymczasowy rodzaj przekierowania, który informuje przeglądarki i wyszukiwarki, że strona internetowa została przeniesiona do nowego adresu, ale tylko na krótki czas. W przeciwieństwie do przekierowania 301, które jest trwałe, przekierowanie 302 sugeruje, że stary adres URL wkrótce będzie ponownie aktywny, i nie powinno być traktowane jako stała zmiana lokalizacji.

W kontekście SEO, przekierowanie 302 ma inne konsekwencje niż 301. Choć również przekazuje część „mocy” SEO do nowego adresu, jest to tylko tymczasowe przekierowanie, więc jego wpływ na długoterminowe rankingi wyszukiwarek jest mniejszy. Wyszukiwarki mogą traktować przekierowanie 302 jako tymczasowe i mogą dalej indeksować stary adres URL, co może wpłynąć na widoczność w wynikach wyszukiwania.

Tymczasowe przekierowanie 302 jest przydatne w sytuacjach, gdy musisz chwilowo przenieść treść lub stronę, na przykład podczas przeprowadzania konserwacji strony, testowania nowych treści, lub wprowadzenia tymczasowych promocji. Pomaga to w utrzymaniu ciągłości działania witryny bez trwałego wpływu na jej SEO.

Przykładowo, jeśli planujesz przenieść stronę na inny adres tylko na krótki czas, używając przekierowania 302, możesz dodać kod do pliku .htaccess lub użyć odpowiednich narzędzi w systemach zarządzania treścią. Kod dla przekierowania 302 w pliku .htaccess wygląda następująco:

Redirect 302 /stary-adres https://twojadomena.pl/nowy-adres

Podobnie jak w przypadku przekierowania 301, ważne jest testowanie i monitorowanie efektów, aby upewnić się, że przekierowanie działa zgodnie z oczekiwaniami i nie wpływa negatywnie na doświadczenie użytkowników oraz SEO.

Inne rodzaje przekierowań – 307/308

Przekierowanie 307 (Tymczasowe Przekierowanie)

Przekierowanie 307 to typ tymczasowego przekierowania, który działa podobnie do przekierowania 302, ale z pewnymi różnicami.

  • Zachowanie Metody HTTP: Przekierowanie 307 różni się od 302 tym, że zachowuje metodę HTTP używaną w oryginalnym żądaniu. Oznacza to, że jeśli żądanie HTTP było typu POST, to przekierowanie 307 nadal będzie używać POST podczas wysyłania żądania do nowego URL. W przypadku 302, metoda mogła być zmieniana na GET.
  • Tymczasowość: Podobnie jak 302, przekierowanie 307 informuje przeglądarki i wyszukiwarki, że przeniesienie jest tymczasowe i nie powinno być traktowane jako trwała zmiana.

Przykład użycia w pliku .htaccess:

Redirect 307 /stary-adres https://twojadomena.pl/nowy-adres

Przekierowanie 308 (Trwałe Przekierowanie)

Przekierowanie 308 jest podobne do 301, ale z zachowaniem metody HTTP:

  • Zachowanie Metody HTTP: Przekierowanie 308 zachowuje metodę HTTP w taki sposób, jak 307, co oznacza, że metoda wysyłania żądania (np. POST) nie zmienia się podczas przekierowania. W przeciwieństwie do 301, które może zmieniać metodę na GET, 308 zachowuje oryginalną metodę.
  • Trwałość: Jak przekierowanie 301, przekierowanie 308 jest traktowane jako trwałe. Oznacza to, że przeglądarki i wyszukiwarki powinny zaktualizować swoje indeksy do nowego adresu na stałe.

Przykład użycia w pliku .htaccess:

Redirect 308 /stary-adres https://twojadomena.pl/nowy-adres

Przekierowania 307 oraz 308 były bardzo popularne w działaniach blavkhat w latach około 2016-2018. W normalnych warunkach przekierowania 307 oraz 308 praktycznie nie są potrzebne. Warto jednak, skoro omawiamy już przekierowania wspomnieć, że istnieją takie możliwości. Nigdy też niewiadomo, kiedy taki rodzaj przekierowania może się przydać

Alternatywy dla przekierowań

Przekierowanie 300 (Wybór Alternatyw)

Przekierowanie 300 jest mniej powszechne i oznacza, że klient ma kilka dostępnych opcji, z których może wybrać. W przeciwieństwie do przekierowań 301, 302, 307 i 308, które automatycznie przenoszą użytkownika do określonego URL, przekierowanie 300 informuje, że dostępnych jest kilka możliwości i użytkownik musi wybrać jedną z nich.

Przykład użycia: Zwykle przekierowanie 300 jest używane w specyficznych przypadkach, takich jak serwisy API, gdzie może być wiele odpowiedzi dostępnych na jedno żądanie.

Przekierowanie 410 (Gone)

Chociaż nie jest to typowe przekierowanie, warto wspomnieć o przekierowaniu 410, które oznacza, że strona została na stałe usunięta i nie jest już dostępna. W przeciwieństwie do przekierowań 301 i 302, które przenoszą użytkowników do nowych lokalizacji, przekierowanie 410 informuje, że zasób jest trwale niedostępny i nie będzie przywrócony. Jest to użyteczne, gdy chcesz jasno poinformować wyszukiwarki, że strona nie powinna być już indeksowana ani śledzona.

Przykład użycia w pliku .htaccess:

Redirect 410 /stary-adres

Przekierowanie 301, 302 a 307 i 308 – podobieństwa i różnice

Przekierowanie:Redirect 301Redirect 302Redirect 307Redirect 308
RodzajTrwałeTymczasoweTymczasoweTrwałe
Zachowanie Metody HTTPMoże być zmieniana na GETMoże być zmieniana na GETZachowuje oryginalną metodę HTTP (POST, PUT itd.)Zachowuje oryginalną metodę HTTP (POST, PUT itd.)
Wskazówka dla SEOPełna moc SEO przekazywana do nowego adresuMoc SEO częściowo przekazywana, nie na stałeMoc SEO częściowo przekazywana, nie na stałePełna moc SEO przekazywana do nowego adresu
Informacja dla przeglądarekStrona została przeniesiona na stałeStrona została przeniesiona tymczasowoStrona została przeniesiona tymczasowoStrona została przeniesiona na stałe
WyszukiwarkiAktualizują swoje indeksy do nowego adresuMogą nadal indeksować stary adres URLMogą nadal indeksować stary adres URLAktualizują swoje indeksy do nowego adresu
Typowe ZastosowanieZmiana domeny, trwałe przeniesienie treściTymczasowe przeniesienie treści na czas konserwacji, testowanieTymczasowe przeniesienie treści, zachowanie metody HTTPZmiana domeny, trwałe przeniesienie treści
Wpływ na UżytkownikówAutomatyczne przekierowanie na nowy adres, stała zmianaAutomatyczne przekierowanie, zmiana tymczasowaAutomatyczne przekierowanie, zmiana tymczasowaAutomatyczne przekierowanie na nowy adres, stała zmiana
Przykład KodRedirect 301 /stary-adres https://nowa-domena.pl/Redirect 302 /stary-adres https://nowa-domena.pl/Redirect 307 /stary-adres https://nowa-domena.pl/Redirect 308 /stary-adres https://nowa-domena.pl/

Różnice i podobieństwa w przekierowaniach

  • 301 vs 308: Oba są przekierowaniami trwałymi, które oznaczają, że strona została na stałe przeniesiona. Główną różnicą jest to, że 301 może zmieniać metodę HTTP na GET, podczas gdy 308 zachowuje oryginalną metodę HTTP. Przekierowanie 308 jest bardziej precyzyjne w zachowaniu metod HTTP, ale jest mniej powszechne niż 301.
  • 302 vs 307: Oba są przekierowaniami tymczasowymi, które oznaczają, że strona została tymczasowo przeniesiona. Różnica polega na tym, że 302 może zmieniać metodę HTTP na GET, podczas gdy 307 zachowuje oryginalną metodę HTTP. Przekierowanie 307 jest bardziej zgodne z zachowaniem metod HTTP, ale w praktyce 302 jest częściej używane.

Dlaczego używać przekierowania 301 (i czasem 302)?

  • Przekierowanie 301 jest najczęściej używane, gdy strona jest przenoszona na stałe. Zapewnia pełne przeniesienie mocy SEO do nowego adresu, co jest kluczowe dla utrzymania rankingów wyszukiwania i wartości linków.
  • Przekierowanie 302 jest używane, gdy zmiana jest tymczasowa, np. podczas konserwacji lub testowania. Jest to bardziej powszechne, ponieważ jest prostsze w użyciu i dobrze współpracuje z różnymi metodami HTTP w codziennych sytuacjach.

Obie te metody są odpowiednie dla większości scenariuszy związanych z przekierowaniami. Wybór między nimi zależy od tego, czy zmiana jest trwała, czy tymczasowa, oraz czy zachowanie metody HTTP jest istotne dla Twojej aplikacji.

Stosowanie przekierowań w zależności od rodzaju serwera

Rodzaj PrzekierowaniaSerwerKonfiguracja
301 (Trwałe Przekierowanie)ApachePlik .htaccess:
Redirect 301 /stary-adres https://nowa-domena.pl/
NginxPlik konfiguracyjny: 
location /stary-adres { return 301 https://nowa-domena.pl/; }
LiteSpeed (Lite)Plik .htaccess:
Redirect 301 /stary-adres https://nowa-domena.pl/
LiteSpeed(Komercyjny)Panel administracyjny: 
Użyj zakładki „Rewrite” w ustawieniach wirtualnego hosta: 
RewriteRule ^/stary-adres$ https://nowa-domena.pl/ [R=301,L]
302 (Tymczasowe Przekierowanie)ApachePlik .htaccess:
Redirect 302 /stary-adres https://nowa-domena.pl/
NginxPlik konfiguracyjny:
location /stary-adres { return 302 https://nowa-domena.pl/; }
LiteSpeed (Lite)Plik .htaccess:
Redirect 302 /stary-adres https://nowa-domena.pl/
LiteSpeed(Komercyjny)Panel administracyjny:
Użyj zakładki „Rewrite” w ustawieniach wirtualnego hosta:
RewriteRule ^/stary-adres$ https://nowa-domena.pl/ [R=302,L]
307 (Tymczasowe Przekierowanie)ApachePlik .htaccess:
Redirect 307 /stary-adres https://nowa-domena.pl/
NginxPlik konfiguracyjny:
location /stary-adres { return 307 https://nowa-domena.pl/; }
LiteSpeed (Lite)Plik .htaccess:
Redirect 307 /stary-adres https://nowa-domena.pl/
LiteSpeed(Komercyjny)Panel administracyjny:
Użyj zakładki „Rewrite” w ustawieniach wirtualnego hosta:
RewriteRule ^/stary-adres$ https://nowa-domena.pl/ [R=307,L]
308 (Trwałe Przekierowanie)ApachePlik .htaccess:
Redirect 308 /stary-adres https://nowa-domena.pl/
NginxPlik konfiguracyjny:
location /stary-adres { return 308 https://nowa-domena.pl/; }
LiteSpeed (Lite)Plik .htaccess:
Redirect 308 /stary-adres https://nowa-domena.pl/
LiteSpeed(Komercyjny)Panel administracyjny:
Użyj zakładki „Rewrite” w ustawieniach wirtualnego hosta:
RewriteRule ^/stary-adres$ https://nowa-domena.pl/ [R=308,L]

Ważne informacje o stosowaniu przekierowań na różnych serwerach

  • Apache: Konfiguracja przekierowań 301, 302, 307 i 308 w Apache opiera się na pliku .htaccess, gdzie używa się odpowiedniego kodu przekierowania.
  • Nginx: Konfiguracja w Nginx odbywa się w plikach konfiguracyjnych serwera, gdzie definiuje się odpowiednie lokalizacje i zwraca odpowiedni kod HTTP.
  • LiteSpeed: W wersji Lite, podobnie jak w Apache, przekierowania ustawia się w pliku .htaccess. W wersji komercyjnej (w tym LiteSpeed Enterprise), konfigurację można zarządzać przez panel administracyjny, wykorzystując sekcję „Rewrite Rules” w ustawieniach wirtualnego hosta.

Praktyczne przekłady przekierowań

Oto przykłady konfiguracji przekierowań dla Apache, Nginx oraz LiteSpeed w różnych scenariuszach:

Przekierowanie domeny z www.domena.pl na domena.pl

Przekierowanie z www na bez www.

Apache:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.domena\.pl [NC]
RewriteRule ^(.*)$ https://domena.pl/$1 [L,R=301]

Nginx:

server {
    listen 80;
    server_name www.domena.pl;
    return 301 $scheme://domena.pl$request_uri;
}

LiteSpeed (Lite):

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.domena\.pl [NC]
RewriteRule ^(.*)$ https://domena.pl/$1 [R=301,L]

LiteSpeed (Komercyjny):
W panelu administracyjnym:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.domena\.pl [NC]
RewriteRule ^(.*)$ https://domena.pl/$1 [R=301,L]

Przekierowanie z domena.pl na www.domena.pl

Przekierowanie z adresu bez www na adres z www na początku.

Apache:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^domena\.pl [NC]
RewriteRule ^(.*)$ https://www.domena.pl/$1 [L,R=301]

Nginx:

server {
    listen 80;
    server_name domena.pl;
    return 301 $scheme://www.domena.pl$request_uri;
}

LiteSpeed (Lite):

RewriteEngine On
RewriteCond %{HTTP_HOST} ^domena\.pl [NC]
RewriteRule ^(.*)$ https://www.domena.pl/$1 [R=301,L]

LiteSpeed (Komercyjny):
W panelu administracyjnym:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^domena\.pl [NC]
RewriteRule ^(.*)$ https://www.domena.pl/$1 [R=301,L]

Przekierowanie z domena.pl na domena.com

Przekierowanie jednej domeny na drugą wraz ze wszystkimi linkami wewnętrznymi.

Apache:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^domena\.pl [NC]
RewriteRule ^(.*)$ https://domena.com/$1 [L,R=301]

Nginx:

server {
    listen 80;
    server_name domena.pl;
    return 301 $scheme://domena.com$request_uri;
}

LiteSpeed (Lite):

RewriteEngine On
RewriteCond %{HTTP_HOST} ^domena\.pl [NC]
RewriteRule ^(.*)$ https://domena.com/$1 [R=301,L]

LiteSpeed (Komercyjny):
W panelu administracyjnym:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^domena\.pl [NC]
RewriteRule ^(.*)$ https://domena.com/$1 [R=301,L]

Przekierowanie z domena.pl/en na domena.com

Przekierowanie wersji językowej na domenę główną.

Apache:

RewriteEngine On
RewriteRule ^en(.*)$ https://domena.com$1 [L,R=301]

Nginx:

server {
    listen 80;
    server_name domena.pl;
    location /en {
        return 301 https://domena.com$request_uri;
    }
}

LiteSpeed (Lite):

RewriteEngine On
RewriteRule ^en(.*)$ https://domena.com$1 [R=301,L]

LiteSpeed (Komercyjny):
W panelu administracyjnym:

RewriteEngine On
RewriteRule ^en(.*)$ https://domena.com$1 [R=301,L]

Przekierowanie z domena.pl/2024/08/04/nazwa-wpisu na domena.pl/nazwa-wpisu

Przekierowanie w WordPress adresu z datą na adres bez daty.

Apache:

RewriteEngine On
RewriteRule ^2024/08/04/(.*)$ https://domena.pl/$1 [L,R=301]

Nginx:

server {
    listen 80;
    server_name domena.pl;
    location ~ ^/2024/08/04/(.*)$ {
        return 301 https://domena.pl/$1;
    }
}

LiteSpeed (Lite):

RewriteEngine On
RewriteRule ^2024/08/04/(.*)$ https://domena.pl/$1 [R=301,L]

LiteSpeed (Komercyjny):
W panelu administracyjnym:

RewriteEngine On
RewriteRule ^2024/08/04/(.*)$ https://domena.pl/$1 [R=301,L]

Przekierowanie z domena.pl/nazwa-wpisu.html na domena.pl/nazwa-wpisu

Przekierowanie z adresu zawierającego rozszerzenie html/php na adres bez końcówki.

Apache:

RewriteEngine On
RewriteRule ^(.+)\.html$ https://domena.pl/$1 [L,R=301]

Nginx:

server {
    listen 80;
    server_name domena.pl;
    location ~ ^/(.+)\.html$ {
        return 301 https://domena.pl/$1;
    }
}

LiteSpeed (Lite):

RewriteEngine On
RewriteRule ^(.+)\.html$ https://domena.pl/$1 [R=301,L]

LiteSpeed (Komercyjny):
W panelu administracyjnym:

RewriteEngine On
RewriteRule ^(.+)\.html$ https://domena.pl/$1 [R=301,L]

Przekierowanie z http://domena.pl na https://domena.pl

Przekierowanie domeny z protokołu http na bezpieczny protokół https. Pamiętaj o włączeniu odpowiedniego certyfikatu SSL na swoim serwerze. Bez tego przekierowanie jest w zasadzie bezcelowe.

Apache:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Nginx:

server {
    listen 80;
    server_name domena.pl;
    return 301 https://domena.pl$request_uri;
}

LiteSpeed (Lite):

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

LiteSpeed (Komercyjny):
W panelu administracyjnym:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Te przykłady pokazują, jak skonfigurować różne typy przekierowań na najpopularniejszych serwerach. W każdym przypadku ważne jest, aby testować konfigurację po jej zastosowaniu, aby upewnić się, że przekierowania działają zgodnie z oczekiwaniami.

Plik .htaccess w serwerze Apache umożliwia konfigurację różnych ustawień serwera bezpośrednio w katalogu, w którym jest umieszczony. Używa on składni wyrażeń regularnych do definiowania reguł, które mogą kontrolować przekierowania, dostęp do plików i inne ustawienia.

Budowa własnych przekierowań i wyrażeń w pliku htaccess

Składnia Wyrażeń Regularnych w .htaccess

Oto opis poszczególnych elementów składni wyrażeń regularnych używanych w pliku .htaccess:

1. ^ (Caret)

  • Opis: Symbol ^ oznacza początek łańcucha (ciągu) w wyrażeniu regularnym.
  • Przykład: W wyrażeniu regularnym ^domena dopasowuje ciąg zaczynający się od „domena”.

2. $ (Dollar Sign)

  • Opis: Symbol $ oznacza koniec łańcucha w wyrażeniu regularnym.
  • Przykład: W wyrażeniu regularnym domena$ dopasowuje ciąg kończący się na „domena”.

3. % (Percent)

  • Opis: W kontekście .htaccess, % nie jest standardowym elementem wyrażeń regularnych. Może być używany w kontekście przekazywania danych, np. w URL-encoding, ale nie jest typowym elementem wyrażeń regularnych w .htaccess.

4. {} (Curly Braces)

  • Opis: Nawiasy klamrowe {} służą do określenia liczby wystąpień danego elementu w wyrażeniu regularnym.
  • Przykład: a{2,4} dopasowuje od 2 do 4 wystąpień litery „a”. a{3} dopasowuje dokładnie 3 wystąpienia litery „a”.

5. [] (Square Brackets)

  • Opis: Nawiasy kwadratowe [] służą do określenia zbioru dopuszczalnych znaków w danym miejscu.
  • Przykład: [abc] dopasowuje jeden z znaków: „a”, „b” lub „c”. [0-9] dopasowuje jeden z cyfr od 0 do 9. [a-zA-Z] dopasowuje jeden znak będący literą alfabetu.

Przykłady użycia flag w .htaccess

Dopasowanie początku łańcucha:

       RewriteRule ^index\.html$ /nowa-strona.html [L]

    To wyrażenie dopasowuje dokładnie „index.html” na początku URL.

    Dopasowanie końca łańcucha:

         RewriteRule ^domena\.pl$ /nowa-strona.html [L]

      To wyrażenie dopasowuje URL kończący się na „domena.pl”.

      Dopasowanie liczby wystąpień:

           RewriteRule ^produkt{2,4}\.html$ /nowy-produkt.html [L]

        To wyrażenie dopasowuje URL, który zawiera od 2 do 4 wystąpień „produkt” przed „.html”.

        Dopasowanie zestawu znaków:

             RewriteRule ^[a-z]+\.html$ /dokument.html [L]

          To wyrażenie dopasowuje URL składający się z jednego lub więcej małych liter alfabetu przed „.html”.

          Flagi w regułach przekierowań w pliku .htaccess dla serwera Apache są używane do modyfikowania zachowania reguł RewriteRule. Flagi te kontrolują różne aspekty działania reguł i wpływają na to, jak reguła jest przetwarzana. Oto najważniejsze flagi:

          Flagi i ich znaczenie przy budowaniu przekierowań

          1. R (Redirect)

          Opis: Flaga R oznacza, że reguła powinna spowodować przekierowanie. Można określić kod statusu HTTP (np. 301 dla przekierowania trwałego, 302 dla tymczasowego) bezpośrednio w tej fladze.

          Przykład: R=301 oznacza przekierowanie z kodem statusu 301 (przekierowanie trwałe).

            RewriteRule ^stary-adres$ https://nowa-domena.pl/ [R=301,L]

          To przekierowuje użytkownika na „https://nowa-domena.pl/” z kodem 301.

          2. L (Last)

          Opis: Flaga L oznacza, że reguła jest ostatnią regułą do przetworzenia, jeśli została dopasowana. Po jej zastosowaniu, dalsze reguły w pliku .htaccess są ignorowane dla tego żądania.

          Przykład: L jest używana, gdy chcesz zakończyć dalsze przetwarzanie reguł po tej regule.

            RewriteRule ^stary-adres$ /nowa-strona.html [L]

          To oznacza, że po dopasowaniu tej reguły, żadne inne reguły w pliku .htaccess nie będą przetwarzane.

          3. NC (No Case)

          Opis: Flaga NC oznacza, że dopasowanie powinno być ignorować wielkość liter. Jest to używane, gdy chcesz, aby reguła działała niezależnie od tego, czy w adresie URL są małe, czy wielkie litery.

          Przykład:

            RewriteRule ^stary-adres$ /nowa-strona.html [NC]

          To pozwala na dopasowanie „STARY-ADRES”, „stary-adres”, „Stary-Adres” itd.

          4. QSA (Query String Append)

          Opis: Flaga QSA oznacza, że jeśli w adresie URL jest ciąg zapytania (query string), powinien być dodany do nowego adresu URL po przekierowaniu.

          Przykład:

            RewriteRule ^stary-adres$ /nowa-strona.html [QSA,L]

          Jeśli URL źródłowy zawiera parametry, takie jak ?id=123, zostaną one dołączone do nowego adresu URL jako ?id=123.

          5. P (Proxy)

          Opis: Flaga P oznacza, że żądanie powinno być traktowane jako proxy, a nie przekierowanie. Używana jest, gdy serwer działa jako proxy do innego serwera.

          Przykład:

            RewriteRule ^stary-adres$ http://inny-serwer.pl/nowa-strona [P]

          To przekierowuje żądanie do innego serwera, zachowując oryginalny adres URL w pasku adresu przeglądarki.

          6. F (Forbidden)

          Opis: Flaga F oznacza, że dostęp do żądanego zasobu powinien być zabroniony. Jest to używane, aby zwrócić błąd 403 Forbidden.

          Przykład:

            RewriteRule ^nie-pozolony$ - [F,L]

          To zwraca błąd 403 dla próby dostępu do „nie-pozolony”.

          7. G (Gone)

          Opis: Flaga G oznacza, że zasób jest nieistniejący i powinien zwrócić błąd 410 Gone.

          Przykład:

            RewriteRule ^stary-adres$ - [G,L]

          To zwraca błąd 410 dla żądania „stary-adres”.

          8. R (Redirect)

          Opis: Flaga R powoduje przekierowanie i umożliwia ustawienie kodu statusu (np. 301, 302, 303, 307).

          Przykład:

            RewriteRule ^stary-adres$ https://nowa-domena.pl/ [R=301,L]

          To przekierowuje na nową domenę z kodem statusu 301.

          Przykłady zastosowania flag w regułach

          1. Przekierowanie trwałe z końcem przetwarzania reguł:
             RewriteRule ^stary-adres$ https://nowa-domena.pl/ [R=301,L]
          1. Przekierowanie z dodaniem ciągu zapytania:
             RewriteRule ^stary-adres$ /nowa-strona.html [QSA,L]
          1. Bez uwzględniania wielkości liter:
             RewriteRule ^stary-adres$ /nowa-strona.html [NC,L]
          1. Zabranianie dostępu:
             RewriteRule ^prywatny$ - [F,L]
          1. Proxy do innego serwera:
             RewriteRule ^przekieruj$ http://inny-serwer.pl/ [P,L]

          Te flagi pozwalają na dostosowanie reguł RewriteRule do różnych potrzeb i zapewniają elastyczność w zarządzaniu ruchem na stronie.

          Realizacja przekierowań w aplikacji, nie na poziomie serwera

          Oto przykłady realizacji przekierowań w różnych językach programowania i frameworkach. Każdy z tych przykładów pokazuje podstawowy sposób przekierowania użytkownika z jednego adresu URL na inny. Aby poznać szczegóły związane z realizacją przekierowań w danym języku programowania, zalecam skorzystać z dokumentacji danego języka.

          Przekierowanie 301 w PHP

          W PHP, przekierowanie można zrealizować przy użyciu nagłówków HTTP. Oto przykład, jak przekierować użytkownika z jednej strony na inną:

          <?php
          // Przekierowanie do nowego URL
          header("Location: https://nowa-domena.pl/");
          exit();
          ?>

          Przekierowanie 301 w JavaScript

          W JavaScript, przekierowanie można osiągnąć za pomocą window.location w kodzie przeglądarki:

          // Przekierowanie do nowego URL
          window.location.href = "https://nowa-domena.pl/";

          Przekierowanie 301 w TypeScript

          W TypeScript, który jest nadzbiorem JavaScript, sposób przekierowania jest identyczny. Przykład:

          // Przekierowanie do nowego URL
          window.location.href = "https://nowa-domena.pl/";

          Przekierowanie 301 w Python (Flask)

          W Flask, frameworku dla Pythona, przekierowanie realizuje się przy użyciu funkcji redirect:

          from flask import Flask, redirect
          
          app = Flask(__name__)
          
          @app.route('/')
          def index():
              # Przekierowanie do nowego URL
              return redirect("https://nowa-domena.pl/")
          
          if __name__ == '__main__':
              app.run()

          Przekierowanie 301 w Python (Django)

          W Django, przekierowanie można zrealizować w widoku przy użyciu funkcji HttpResponseRedirect:

          from django.http import HttpResponseRedirect
          from django.shortcuts import render
          
          def my_view(request):
              # Przekierowanie do nowego URL
              return HttpResponseRedirect("https://nowa-domena.pl/")

          Przekierowanie 301 w Ruby on Rails

          W Ruby on Rails, przekierowanie realizuje się w kontrolerze przy użyciu metody redirect_to:

          class MyController < ApplicationController
            def index
              # Przekierowanie do nowego URL
              redirect_to "https://nowa-domena.pl/"
            end
          end

          Jak sprawdzić poprawność przekierowania 301

          Sprawdzanie poprawności przekierowania 301 jest ważne, aby upewnić się, że przekierowania działają zgodnie z zamierzeniem i że nie występują żadne problemy z SEO, użytecznością czy wydajnością. Oto kilka metod, które możesz zastosować do sprawdzenia poprawności przekierowania 301:

          1. Użyj narzędzia online do sprawdzania przekierowań

          Narzędzia do sprawdzania przekierowań:

          Narzędzia do analizy SEO:

          2. Wiersz poleceń/terminal

          curl:

          Otwórz terminal i użyj curl z opcją -I (nagłówki) i -L (przekierowania), aby zobaczyć, jak strona przekierowuje.

            curl -I -L http://stary-url.pl

          Sprawdź w odpowiedzi, czy kod statusu to 301 i czy adres URL końcowy jest zgodny z oczekiwanym.

          wget:

          W terminalu, użyj wget z opcją --server-response do sprawdzenia odpowiedzi serwera:

            wget --server-response --max-redirect=10 http://stary-url.pl

          Zwróci to informacje o nagłówkach HTTP i przekierowaniach.

          3. Narzędzia dla programistów w przeglądarce

          Otwórz narzędzia dla programistów w przeglądarkach (F12 w większości przeglądarek), przejdź do zakładki „Network” (Sieć) i sprawdź nagłówki HTTP podczas ładowania strony.

          Wyszukaj kod statusu 301 w kolumnie „Status” i sprawdź, czy przekierowanie działa zgodnie z oczekiwaniami.

          4. Sprawdzanie w logach serwera apache/nginx

          Sprawdź logi serwera, aby zobaczyć, jak serwer obsługuje przekierowania. W logach powinien być widoczny kod statusu 301.

          Logi zazwyczaj znajdują się w /var/log/apache2/ dla Apache lub /var/log/nginx/ dla Nginx.

          5. Google Search Console

          W Google Search Console możesz sprawdzić, czy Google prawidłowo śledzi i indeksuje przekierowania. Użyj funkcji „Sprawdź URL” w narzędziu „Narzędzia do monitorowania pokrycia”.

          Przekierowania 301 w Google Search Console

          Aby skutecznie monitorować przekierowania 301 w Google Search Console, warto zastosować kilka kluczowych kroków, które pomogą upewnić się, że przekierowania są prawidłowo wdrożone i nie wpływają negatywnie na SEO. Pierwszym krokiem jest zalogowanie się do Google Search Console i wybór właściwej właściwości strony internetowej, której przekierowania chcemy sprawdzić. Następnie warto skorzystać z narzędzia „Sprawdź URL”, które pozwala wprowadzić stary adres URL i sprawdzić, czy został przekierowany do nowego. Po wykonaniu tej operacji, Google Search Console pokaże, czy przekierowanie zostało wykonane poprawnie oraz wskaże kod statusu HTTP, jak 301.

          Kolejnym ważnym krokiem jest analiza raportów dostępnych w Google Search Console. W sekcji „Strony” można sprawdzić błędy indeksowania, ostrzeżenia oraz liczby zaindeksowanych stron. Ważne jest, aby zwrócić uwagę na sekcję „Wykluczone” i „Ostrzeżenia”, gdzie mogą pojawić się problemy związane z przekierowaniami czy takie jak błędy 404 (nie znaleziono). Warto również przeanalizować raport „Linki”, aby upewnić się, że linki wewnętrzne i zewnętrzne prowadzące do starych URL-i są odpowiednio przekierowywane do nowych. Można to zrealizować także poprzez zewnętrzne narzędzia takie jak Screaming Frog czy SiteBulb.

          Regularne sprawdzanie statusu URL za pomocą narzędzia „Sprawdź URL” oraz monitorowanie raportów „Strony” i „Linki” pozwala na bieżąco śledzenie stanu przekierowań. Ważne jest również, aby zaktualizować mapę strony (sitemap) i przesłać ją ponownie do Google Search Console. Dzięki temu Google będzie mogło szybko znaleźć nowe URL-e i sprawdzić, czy przekierowania są poprawnie skonfigurowane. Regularne monitorowanie przekierowań oraz analizowanie ich wpływu na SEO i ruch na stronie pozwala na skuteczne zarządzanie przekierowaniami 301 i zapewnienie, że działają one zgodnie z oczekiwaniami.