Co to jest przekierowanie 301 i jak działa? Jak utworzyć przekierowanie 301 w pliku .htaccess, PHP i WordPressie i jak sprawdzić jego działanie?
Spis treściPrzekierowanie 301 pozwala przenieść użytkownika na nowy adres, pod którym odnajdzie dane zasoby. Jest to niezwykle istotna funkcjonalność. Dzięki niej trafi on bowiem w miejsce, w którym powinien się znaleźć. Otrzyma dostęp do pożądanych treści i nie czeka go przykra niespodzianka pokroju informacji o nieodnalezieniu witryny. Przeniesienia miejsca w sieci pod inny adres URL trzeba jednak dokonać odpowiedzialnie.
Zarówno z punktu widzenia internautów, jak i algorytmów Google, musi być to działanie przemyślane. Tylko wtedy internetowy biznes nie straci zasięgów, pozycji w wyszukiwarce i nie zrazi do siebie odbiorców. Wszystko to oferuje zastosowanie przekierowania 301 Moved Permanently. Musisz jedynie wiedzieć, jak go poprawnie użyć. Na szczęście nie jest to aż tak skomplikowane. Nie powinieneś mieć z tym większego problemu.
Co to jest przekierowanie 301?
Przekierowanie klienta do innego adresu URL realizowane jest poprzez specjalny kod. Serwer strony internetowej, na którą próbuje wejść internauta, wysyła go do jego przeglądarki internetowej. Co jednak istotne, istnieją różne kody, przeznaczone do określonych przypadków przeniesień. Najpopularniejszym z nich natomiast jest HTTP 301. To przykład przekierowania trwałego. Użycie go oznacza, że żądany zasób został trwale przeniesiony ze starego adresu na nowy i tylko tam będzie teraz dostępny.
W praktyce użytkownik najczęściej nawet nie zauważa, że nastąpiło to jedno przekierowanie. Bezproblemu zyskuje dostęp do tej samej treści (lub zbliżonej — zależnie od planów i motywów właściciela witryny). Przekierowanie następuje natomiast jeszcze zanim załadują się jakiekolwiek pliki. Zmianę można zauważyć, obserwując nazwę samej domeny, która jest wywoływana. Po przekierowaniu w pasku przeglądarki będzie ona zmieniona na nową.
Przekierowania wykorzystuje się z myślą o „poprowadzeniu odpowiednią ścieżką” zarówno internautów, jak i robotów indeksujących. Przeglądarka bowiem może w każdej chwili sprawdzić Twoją stronę internetową. Zbada, czy poprawnie się otwiera i wykonuje żądania odbiorców. Dobrze zrobione przekierowanie z jednego adresu na inny nie sprowadzi na Ciebie kłopotów. Jeśli natomiast dana strona nie będzie dostępna dla botów, a nie znajdą one drogi do jej nowszej wersji, wpłynie to negatywnie na SEO.
Przekierowanie 301 jest rozwiązaniem powszechnie stosowanym. To sprawia, że wspierane jest ono przez wszystkie najpopularniejsze przeglądarki internetowe. Dotyczy to zarówno rozwiązań tradycyjnych, jak i mobilnych. Dzięki temu uważane jest za wiarygodne i bezpieczne.
Formuła
301 Moved Permanently
Do czego służy przekierowanie 301?
Przekierowaniu 301 sprzyjają różne sytuacje. Zapewne z wieloma z nimi spotkasz się, prowadząc swoją stronę internetową. Najczęściej rozwiązanie to wykorzystywane jest, gdy:
- w grę wchodzi zmiana domeny na inną,
- usunięta zostaje jedna z podstron i ruch powinien zostać przeniesiony na inną (zbliżoną tematycznie) lub na stronę główną;
- kupujesz i wprowadzasz certyfikat SSL i przenosisz ruch z protokołu http:// na protokół https:// (dotyczy całej domeny i witryny, a nie tylko jednej podstrony);
- chcesz uniknąć duplikacji treści. Zamierzasz ruch ze zbliżonych tematycznie podstron kierować do jednej, zauważanej przez roboty indeksujące.
Przekierowania 301 mają ogromne znaczenie, bo bez nich internauci nie znajdą strony, na której im zależy. Co się więc stanie, jeśli np. usuniemy daną podstronę, nie ustawimy przekierowania, a ktoś będzie chciał na nią wejść? Takie osoby otrzymają komunikat o błędzie 404. To negatywnie wpłynie na postrzeganie naszego miejsca w sieci. Możliwe nawet, że stracimy potencjalnych użytkowników czy klientów. Łatwo tak nieodpowiedzialnym zachowaniem ich do siebie zrazić. W długofalowej perspektywie może to ponadto niekorzystnie wpłynąć na opinię o Twojej działalności.
Warto zobrazować zasadę działania przekierowań na konkretnej sytuacji. Załóżmy, że jako użytkownik chcesz odwiedzić witrynę „przyklad-strony.pl/stary„. Nie wiesz jednak, że ta podstrona już nie istnieje. Właściciel serwera i witryny przeniósł jej zawartość bowiem na „przyklad-strony.pl/nowy” przy użyciu przekierowania 301. Wpisujesz zatem — jak zwykle — w wyszukiwarce adres „przyklad-strony.pl/stary„.
Serwer natychmiast jednak informuje przeglądarkę, że poszukiwana zawartość dostępna jest w innej lokalizacji. Następuje automatyczne przekierowanie wyszukiwarki na nową domenę. Nowa witryna „przyklad-strony.pl/nowy” otwiera się zupełnie sama. Możesz nawet nie zauważyć zmiany w pasku adresu. Działa to też identycznie, gdy:
- ze starej domeny przekierowujemy użytkownika na nową,
- z usuniętej podstrony zostanie przekierowany na domenę główną lub inną podstronę o podobnej tematyce.
Jak ustawić przekierowanie 301?
Wiesz już, dlaczego odpowiednie przekierowanie użytkownika na nową witrynę jest tak istotne. Pojawia się zatem nowe pytanie: jak wprowadzić HTTP 301 poprawnie? Istnieje na to kilka sposobów. Wystarczy skorzystać z przekierowania w:
- pliku .htaccess,
- kodzie PHP,
- WordPressie.
Każdy z tych sposobów jest bezpieczny i umożliwia przekierowanie strony między dwoma adresami. Zawsze jednak pamiętaj, aby na koniec i tak upewnić się, że nowe rozwiązanie zostało wprowadzone poprawnie. Wszelkie błędy mogą negatywnie wpłynąć na widoczność witryny w internecie.
Plik .htaccess
Do wykonania przekierowania możesz skorzystać z modyfikacji pliku .htaccess. Umożliwia to wprowadzenie jednej z poniższych komend:
RewriteEngine On
Redirect 301 /starapodstrona https://www.nowa-strona.pl
W .htaccess możliwe jest też przekierowanie wszystkich stron i podstron ze starej domeny na nową. Jeśli struktura witryny pozostaje niezmienna, należy użyć:
RewriteEngine On
RewriteCond %{HTTP_HOST}^(www\.)?stara-domena\.pl [NC]
RewritRule (.*) http://nowa-strona.pl/$1 [R=301,L]
W pliku tym ustawić można ponadto przekierowanie domeny z takiej bez przedrostka, na taką z „WWW”. Wykorzystać do tego możesz kod:
RewriteEngine On
RewiteCond %{HTTP_HOST} !^www.
RewirteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
Na ustawienie formy bez „WWW” pozwala z kolei kod:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
Użytkownicy korzystający z certyfikatów SSL mogą użyć pliku .htaccess do wymuszenie adresu z przedrostkiem „https://”. Wykorzystać trzeba do tego kod:
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Więcej przeczytasz także na: Jak uruchomić SSL, czyli HTTPS na stronie w WordPressie i nie tylko?
Jeśli chcesz stworzyć przekierowanie z jednego adresu do drugiego, ale w ramach tej samej domeny, użyj do tego:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?twojadomena\.pl$ [NC]
RewriteRule ^adres1(\/.*)?$ twojadomena.pl/adres2 [R=301,L]
Przekierowanie na jeden adres wielu domen możliwe jest dzięki:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?przykladowa-domena1.pl$ [OR]
RewriteCond %{HTTP_HOST} ^(www\.)?przykladowa-domena2.pl$
RewriteRule ^(.*)$ http://www.przykladowa-domena.pl/$1 [R=301,L]
PHP
Ten sposób opiera się na funkcji PHP Header. Wystarczy zatem, że wprowadzisz kod:
<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location:/nowy-adres.html");
header("Connection:close");
exit;
?>
WordPress
Przekierowanie ustawisz także przy użyciu odpowiedniej wtyczki, jeśli korzystasz z WordPressa. Ten popularny CMS pozwala uniknąć „zabaw” z kodem, które przerażają wielu administratorów witryn WWW. W tym przypadku wystarczy tylko zainstalować jedną z popularnych wtyczek SEO. Wśród najpopularniejszych wymienić można np. SEO Press czy Yoast SEO.
Czasem niestety opcja przekierowań dostępna jest tylko w ich wersjach premium. Zdarzają się natomiast również warianty darmowe, które to oferują. Jak to działa w przypadku wtyczek? Najczęściej musisz jedynie rozpocząć przy ich użyciu edycję odpowiedniej podstrony. W ustawienia powinna widnieć zakładka związana z przekierowaniem 301. Wystarczy umieścić w niej tylko nowy adres, do którego ma kierować serwer.
Szczególnie warta polecenia jest w tym miejscu popularna wtyczka Redirection. Znaleźć ją możesz w zakładce „Wtyczki” na swoim koncie w WordPressie. Wystarczy jedynie, że ją zainstalujesz, a następnie ustawisz odpowiednie przekierowanie. Co istotne, dotyczy to zarówno kodu HTTP 301, jak i innych rozwiązań, które możesz tam łatwo zastosować.
Jak sprawdzić, czy przekierowanie działa?
Najłatwiejszym sposobem na przekonanie się, czy kod 301 działa, jest wpisanie pierwotnego adresu. Jeśli przeglądarka trafi na dobrą stronę, a URL ulegnie zmianie, to znaczy, że wszystko poszło zgodnie z planem. W takim przypadku jednak nie dowiesz się, jakiego dokładnie przekierowania użyto na stronie. Wiedzę tę na szczęście da się bardzo łatwo uzupełnić. Wykorzystać do tego możesz liczne narzędzia online, które w wielu przypadkach są darmowe.
My posłużymy się tu stroną httpstatus.io. Wystarczy tylko, że wpiszesz adres w puste pole i naciśniesz niebieski przycisk „Check status”. W odpowiedzi wyświetlą Ci się kody HTTP, które zastosowane zostały przy wywoływaniu danej witryny. W naszym przypadku jest to właśnie 301 oraz standardowy 200.
Kolejnym sposobem jest skorzystanie z cURL. Nie należy to do szczególnie wymagających wyzwań. Wystarczy jedynie, że otworzysz konsolę i wprowadzisz odpowiednie polecenie wyświetlające nagłówki HTTP:
curl -X HEAD -I <adres-witryny>
Odpowiedzią na to żądanie powinno być wyświetlenie się odpowiedniego statusu. Mowa oczywiście o HTTP 301, o ile wszystko przebiegło zgodnie z planem. Jeśli tak jest, Twoja strona wyświetli się użytkownikowi prawidłowo i zgodnie z Twoimi oczekiwaniami. Kod 301 wykorzystaliśmy do przekierowania ze strony Jakwybrachosting.pl, co widać na poniższym przykładzie.
Przekierowania wykorzystywane do wyświetlenia danej witryny sprawdzić też możesz w konsoli Chrome. Po załadowaniu strony naciśnij przycisk F12. Następnie przejdź do sekcji „Network”. Kody HTTP widoczne będą w kolumnie „Status”.
Użyte przekierowanie możesz sprawdzić w jeszcze jeden sposób – przy użyciu konsoli przeglądarki. Gdy witryna już się otworzy (np. w Chrome), naciśnij przycisk F12. W panelu, który pokaże się w prawej części ekranu, przejdź do zakładki „Network”. Tam – w kolumnie „Status” – zobaczysz kod HTTP wykorzystany do uruchomienia strony.
Przekierowanie 301 a przekierowanie 302
Niektórzy twórcy stron zastanawiają się, czego lepiej użyć: kodu HTTP 301 czy przekierowania 302? Warto przede wszystkim wiedzieć, że rozwiązania te nie są równoznaczne. Nie można stosować ich zamiennie i traktować jako wzajemnych alternatyw. Druga opcja to bowiem przekierowanie tymczasowe. Jego zadaniem jest niesienie informacji przede wszystkim do robotów Google. Dzięki niemu określają one, że dany zasób jest tylko tymczasowo niedostępny pod danym adresem. W ten sposób „stary” URL nie jest usuwany z wyników wyszukiwania. Sygnały rankingowe natomiast nie zostają przeniesione na nowy adres.
Przekierowanie 302 zatem polecane jest wyłącznie w przypadku witryn, które niedostępne są tylko przez określony czas. Bywa wykorzystywany np. przez sklepy internetowe, w których w danym momencie zabrakło jednego z produktów. Nie sprawdzi się natomiast, gdy zamierzasz na stałe korzystać z danego zasobu pod nowym adresem.
Przekierowanie 301 a widoczność w wynikach wyszukiwania
Jeszcze kilka lat temu panowało przekonanie, że przekierowanie 301 znacznie osłabia widoczność witryny w sieci. Zależnie od źródeł, mowa była o spadkach nawet na poziomie do 20%. Skąd jednak wzięła się taka myśl i czy jest nadal aktualna?
Rzeczywiście do 2015 roku Google potrafiło „ukarać” witrynę za to, że stosuje przekierowanie. Nie była to zatem strategia polecana i popularna. Właściciele domen trzymali się ich kurczowo, dbając o SEO. Zdecydowanie się na ten krok zmniejszało zdecydowanie ruch. Często jego odbudowa potrafiła trwać nawet kilka miesięcy. Ostatecznie zatem strat płynących z przekierowania było więcej niż pożytku.
Dzisiaj jednak sytuacja ta wygląda zupełnie inaczej. Oczywiście zawsze wszystko zależy od konkretnego przypadku. W SEO nic nie jest pewne na 100% i identyczne w każdej sytuacji. Najczęściej natomiast po zastosowaniu kodu HTTP 301 Moved Permanently straty w ruchu są minimalne. Niejednokrotnie nie występują nawet w ogóle, o ile przekierowanie prowadzi do identycznej kopii oryginalnej witryny. Drobne zmiany, np. w adresie URL, nie powinny zaszkodzić Twojemu biznesowi online.
Sprawa się jednak komplikuje, gdy metamorfozie ulega więcej elementów w witrynie. W takim przypadku roboty Google na nowo „prześwietlają” daną domenę. Sprawdzają, co na niej jest nowego, a co zostało usunięte. Oceniają, czy jest to zmiana na lepsze, czy wręcz przeciwnie. Następnie – po pewnym czasie – dochodzi do roszad w wynikach wyszukiwania. Zależnie od werdyktu algorytmu, strona może znaleźć się na jeszcze wyższej pozycji, bądź też boleśnie spaść.
W przypadku największych serwisów, generujących potężny ruch, przekierowania bywają działaniami dość ryzykowanymi. Każdy administrator i właściciel swojego miejsca w sieci powinien zdawać sobie z tego sprawę. Jeśli natomiast zrobi to w przemyślany sposób i pod okiem specjalistów, może wiele na tym zyskać.
Inne kody HTTP
Poznaj pozostałe kody odpowiedzi HTTP, a w szczególności:
- Kody ℹ️ informacyjne, takie jak: HTTP 103 – Early Hints;
- Kody ✅ powodzenia, takie jak: HTTP 200;
- Kody ↩️ przekierowań, takie jak: przekierowanie 301, przekierowanie 302, HTTP 304 (Not modified), przekierowanie 307, przekierowanie 308 czy błąd HTTP 310 (Too many redirects).
- Kody 🛑 błędów po stronie klienta, takie jak: Błąd 400 (Bad Request), Błąd 401 (Unauthorized), Błąd 403 (Forbidden), Błąd 404 (Nie znaleziono), Błąd 405 (Method Not Allowed), Błąd 408 (Request Timeout), Błąd 410 (Gone), Błąd 429 (Too Many Requests) czy Błąd 499 (Client closed request);
- Kody ⚠️ błędów po stronie serwera, takie jak: Błąd 500 (Internal Server Error), Błąd 501 (Not implemented), Błąd 502 (Bad Gateway), Błąd 503 (Service Unavailable), Błąd 504 (Gateway Timeout), Błąd 505 (HTTP Version Not Supported) czy Błąd 509 (Bandwidth Limit Exceeded).
Zobacz też pełną listę kodów odpowiedzi HTTP wraz z wyjaśnieniami.