🍪 Można ciasteczko?

Ta strona chce wykorzystywać pliki cookie do analizowania ruchu oraz mierzenia skuteczności i personalizacji reklam zgodnie z polityką prywatności. Zgadzasz się?

PORADNIKI

7 min. czytania

Przekierowanie 307

Przekierowanie 307

Fot. MM

Co to jest przekierowanie 307? Jak i kiedy go używać? Jak go wdrożyć w praktyce? Jak sprawdzić kod HTTP 307 Temporary Redirect?

Spis treści
Serwer

Wśród kodów HTTP są różne rodzaje przekierowań. Łatwo rozpoznać je po znaczniku rozpoczynającym się od cyfry„3″. Kod HTTP 307 jednak często jest nazywany nieprawdziwym przekierowaniem. Rzeczywiście działa na nieco innych zasadach niż np. standardowe 301. Mimo to jednak pełni bardzo ważne zadanie i może być przydatny w najróżniejszych sytuacjach. Słusznie kojarzony jest z HSTS. Choć pojawił się stosunkowo niedawno, powszechnie wykorzystywany jest przez twórców witryn WWW. W dalszej części artykułu dokładnie opisaliśmy specyfikę przekierowania 307. Jego właściwości oraz kwestie, które odróżniają go od kodu przekierowania 302. Omówiliśmy także jego wpływ na bezpieczeństwo oraz widoczność strony internetowej w wynikach wyszukiwania.

Co to jest przekierowanie 307?

307 to przekierowanie tymczasowe. Jego zadaniem jest wskazanie, że żądany przez użytkownika zasób znajduje się w innym miejscu. W parametrze „Location” w nagłówku HTTP strony znajduje się adres URL jego nowej lokalizacji. Co istotne, wykorzystanie tego rozwiązania jest znakiem, że w przyszłości umiejscowienie pożądanych informacji może ulec zmianie. Właśnie dlatego kolejne zapytania powinny kierować internautę na dotychczasowy adres (oryginalny).

Przekierowanie 307 uznawane jest za następcę kodu 302. Można powiedzieć, że jest także nieco zbliżony w działaniu do 303. Używa się go do przekierowania strony w inne miejsce. Najważniejsze jest jednak to, że w jego przypadku metoda zapytania nie zmienia się z POST na GET. W praktyce zatem po wystosowaniu żądania metodą POST powinno nastąpić kolejne zapytanie POST. Przykład jego wykorzystania może wyglądać np. tak:

  • przeglądarka wysyła żądanie POST z wypełnionym formularzem rejestracji,
  • serwer odpowiada kodem HTTP 307 z formularzem logowania,
  • przeglądarka wysyła żądanie POST z wypełnionym formularzem logowania.

Opisywane przekierowanie strony może być realizowane na poziomie przeglądarki internetowej. Dzięki temu może pozostawać ono zupełnie niewidzialne dla serwera. Jako standardowe przeniesienie witryny pozwala nadal indeksować pierwszy adres URL. To natomiast przyczynia się do tego, że kod postrzegany jest jako atrakcyjny z punktu widzenia pozycjonowania i SEO.

HTTP 307 akceptowany jest przez wszystkie standardowe i mobilne przeglądarki internetowe. Co jednak istotne, stanowi element specyfikacji HTTP 1.1. W przypadku starszych i niezaktualizowanych rozwiązań może być sporadycznie nieprawidłowo interpretowany. Mimo to wskazane jest korzystanie z niego. Szczególnie polecany jest, gdy w grę wchodzi tymczasowa zmiana adresu URL. Zapewnia bezpieczeństwo na o wiele wyższym poziomie niż standardowy kod 302.

Formuła:

307 Temporary Redirect

Kiedy warto zastosować przekierowanie 307 z jednego adresu URL na inny?

Kiedy warto wprowadzić nowy adres URL, na który nastąpi przeniesienie strony? Takiego rozwiązania wymagają niezwykle rozmaite sytuacje. Jako twórca witryn WWW z pewnością spotkasz się z nim wielokrotnie. Co istotne, dotyczy to zarówno portali, jak i zwykłych stron WWW. Ponadto może być nadzwyczaj przydatne także w sklepie internetowym. Warto przekierować użytkownika na inną podstronę, gdy np.:

  • wprowadzasz modernizacje na oryginalnej domenie,
  • aktualizujesz poprzednią wersję witryny,
  • przebudowujesz układ całej witryny,
  • posiadasz oferty sezonowe, które odsyłają wzajemnie do siebie, zależnie od np. pory roku,
  • produkt nie jest obecnie dostępny w Twoim sklepie, ale masz pewność, że w przyszłości powróci do oferty.

Tego przekierowania używać możesz zawsze, jeśli tylko przenosisz stronę w inne miejsce na chwilę. Kod 307 bowiem z założenia nie powinien być stały. W takiej sytuacji dojść by bowiem mogło do duplikacji treści. W ocenie wyszukiwarek byłoby to natomiast bardzo niekorzystne zarówno dla nowej, jak i oryginalnej witryny. Przy założeniu jednak, że pod nowym adresem serwis będzie tylko przez pewien czas, jest to opcja godna uwagi.

307 HSTS

HTTP 307 jest wykorzystywany także wtedy, gdy w grę wchodzi protokół HTTPS. Zazwyczaj przenoszenie witryny z HTTP na HTTPS odbywa się przy wykorzystaniu kodu (przekierowania) 301. Problem jednak w tym, że takie przekierowanie ma miejsce dopiero po odczytaniu nagłówka. To daje pole do popisu potencjalnym, internetowym oszustom. Mogą oni spróbować umieścić szkodliwe oprogramowanie między otwarciem adresu URL a przekierowaniem w nowe miejsce.

Stosunkowo łatwo takiego zagrożenia jednak uniknąć. Pomoże w tym HTTP Strict Transport Security, czyli HSTS. To rodzaj specyfikacji HTTP. Wymusza na przeglądarce, aby zawsze stosowała protokół HTTPS. Ta procedura realizowana jest natomiast właśnie za pomocą 307 Temporary Redirect. W praktyce zatem nawet żądanie kierujące na stronę słabiej zabezpieczoną, przekierowywane jest na tę z lepszą ochroną. HSTS połączony z HTTP 307 nie jest prawdziwym przekierowaniem. Zastosowany kod jest w stanie zobaczyć tylko przeglądarka, której to dotyczy. Jest natomiast rozwiązaniem bezpiecznym.

Jak zastosować przekierowanie 307 na inną stronę internetową?

Aby ustawić kod HTTP 307, musisz stworzyć przekierowanie po stronie serwera. Użyj do tego plików konfiguracji serwera. W przypadku serwera Apache (lub LiteSpeed) będzie to plik .htaccess. Znajduje się on w głównym folderze witryny, zlokalizowanym na Twoim serwerze. Dostaniesz się do niego za pomocą odpowiednich programów (np. FileZilla, WinSCP). Alternatywą jest edycja pliku w przeglądarce, za pośrednictwem panelu klienta u hostingodawcy.

Aby wykonać przekierowanie, posłuż się kodem:

Redirect 307 /przykladowa-strona/ https://nowa-strona.pl

Co istotne, przed fragmentem „/przykladowa-strona/ nie dodawaj przedrostków WWW, http:// czy https://.

Przy użyciu kodu 307 możesz także przekierować stronę na serwerze Nginx. Np. przekierowując stronę z HTTP na HTTPS wykorzystując do tego formułę:

<VirtualHost *:80>
ServerName przyklad-strony.pl
Redirect 307 / https://przyklad-strony.pl
</VirtualHost>

Jak sprawdzić, czy przekierowanie 307 działa?

Przekierowanie zostało ustawione? Zawsze upewnij się dodatkowo, że działa ono prawidłowo i przenosi użytkowników do odpowiednich, nowych podstron. Każda pomyłka może sprawić, że Twoja strona im się nie otworzy. To może negatywnie odbić się natomiast na całej działalności. Na szczęście przetestowanie poprawności ustawionego kodu 307 nie jest trudne. Wykorzystaj do tego przeglądarkę internetową.

Wejdź na darmową stronę internetową httpstatus.io. W puste pole możesz wpisać adresy oryginalnych podstron. Następnie naciśnij niebieski przycisk „Check status”. System wyświetli Ci wykorzystane przekierowania. W przypadku naszej witryny został wykorzystany kod 301. Następnie widnieje standardowy komunikat HTTP 200 OK. Jeśli wszystkie czynności wykonasz prawidłowo, w Twoim przypadku „301” zamienić się powinno na „307”.

Poprawne działanie przekierowania 307 sprawdzić możesz również przy pomocy cURL. Aby to zrobić, uruchom konsolę, a następnie posłuż się poleceniem:

curl -X HEAD -I <adres_witryny>

Odpowiedzią systemu powinno być wyświetlenie komunikatów wystosowanych podczas wykonywania Twojego polecenia. Jeśli wszystko poszło zgodnie z planem, pokaże Ci się przekierowanie HTTP 307. W naszym przykładzie, widocznym poniżej, zastosowany został kod 301 przekierowania permanentnego.

Alternatywnie do sprawdzenia poprawności kodu 307 wykorzystać możesz konsolę przeglądarki. W przypadku Chrome, po wejściu na stronę, naciśnij przycisk F12. Przejdź do zakładki „Network”, a następnie spójrz na kolumnę „Status”. To niej widnieją wszystkie przekierowania.

Adres URL przekierować za pomocą kodu 307 czy 302?

Kod HTTP 302 wykorzystywany bywa do tworzenia tymczasowych przekierowań w HTTP 1.0. Wyszukiwarki interpretują go jednak czasem błędnie. Pozwalają na zmianę żądania z metody POST na GET. Nie spełnia to wymagań osób, przez które bywa wykorzystywany.

Właśnie dlatego w HTTP 1.1 (i HTTP/2 oraz HTTP/3 używać już można kodu 307. On nie pozwala na wprowadzanie wyżej wspomnianych metamorfoz. Dzięki temu uznawany jest za bezpieczniejszy i lepszy wybór. Wskazane jest używanie go wszędzie tam, gdzie to możliwe. Oczywiście przy założeniu, że zmiana adresu jest tylko tymczasowa.

Przekierowanie 307 adresów URL a pozycjonowanie

W jaki sposób roboty Google reagują na ustawienie na stronie przekierowania 307? Kod ten nie jest w żaden sposób uwzględniany przez algorytmy w przypadku indeksowania URL-a. Co więcej, nie ma on także znaczenia w kwestii przenoszenia „mocy” pozycjonowania. Oznacza to, że w tej kwestii jest bardzo zbliżony do HTTP 302.

Wynika to z faktu, że on również jest rozwiązaniem mówiącym robotom wyszukiwarek, że zmiana jest jedynie tymczasowa. To pewnego rodzaju „deklaracja”, że pod innym, nowym adresem, witryna będzie widoczna tylko przez krótki czas. Jak już wspominaliśmy, HTTP 307 Temporary Redirect może nie być typowym przekierowaniem. Realizowany bywa na poziomie przeglądarki internetowej w przypadku HSTS. Nie wpływa wtedy w żaden sposób na pozycję podstrony w wynikach wyszukiwania. Jego użycie nie sprawia w takiej sytuacji, że link pojawia się wyżej lub niżej niż do tej pory.

Oczywiście są to założenia dotyczące naprawdę krótkotrwałego przekierowania strony. Jeśli będzie ono trwało zbyt długo, to po pewnym czasie również może sprawiać problemy. Wskazane jest zatem uważne monitorowanie zachowań zarówno starego, jak i nowego adresu pod względem widoczności. Lepiej sięgać po kod 307 tylko wtedy, gdy jest to rzeczywiście potrzebne. Wskazane jest też możliwie szybkie jego usunięcie, po zrealizowaniu określonych celów.