TrueURL

Darmowe narzędzie do przekierowań

Sprawdzanie meta refresh

Nie każde przekierowanie to kod odpowiedzi HTTP. TrueURL odczytuje kod HTML każdej strony w łańcuchu i znajduje tagi meta refresh oraz przekierowania JavaScript wraz z ich docelowym adresem URL i opóźnieniem.

Czym jest przekierowanie meta refresh?

Meta refresh to tag HTML, który nakazuje przeglądarce załadować inny adres URL po upływie określonej liczby sekund:

<meta http-equiv="refresh" content="0; url=https://example.com/new-page">

Przy opóźnieniu 0 działa jak zwykłe przekierowanie. Przy dłuższym opóźnieniu użytkownik najpierw widzi stronę, jak na dawnych stronach z komunikatem „za chwilę nastąpi przekierowanie”. Przekierowania JavaScript robią to samo za pomocą kodu, np. location.href = '...' lub location.replace('...'). W obu przypadkach są to przekierowania po stronie klienta: serwer odpowiada kodem 200 OK, a przekierowanie wykonuje przeglądarka.

Jak TrueURL wykrywa przekierowania po stronie klienta

W każdej odpowiedzi HTML z kodem 2xx TrueURL przeszukuje pierwsze 256 KB strony w poszukiwaniu tagu meta refresh oraz prostych, bezwarunkowych przekierowań JavaScript. Wykrywany jest też nagłówek HTTP Refresh, który działa jak meta refresh. Po znalezieniu przekierowania TrueURL pokazuje fragment tagu lub skryptu, ustalony docelowy adres URL i opóźnienie, oznacza przeskok jako meta refresh lub JavaScript i kontynuuje łańcuch od adresu docelowego. Odświeżenie, które tylko ponownie ładuje tę samą stronę, nie jest przekierowaniem i zostaje pominięte.

W ustawieniach zaawansowanych możesz wyłączyć podążanie za każdym z tych typów, aby obejrzeć samą stronę. TrueURL nie wykonuje JavaScriptu: odczytuje skrypty na stronie i rozpoznaje przekierowania na stały adres URL, które zawsze uruchamiają się podczas ładowania strony – od razu lub w setTimeout na najwyższym poziomie skryptu. Przekierowania zależne od warunku, np. kliknięcia, wyboru w sprawie zgody lub rozmiaru ekranu, albo takie, które budują docelowy adres URL w kodzie, nie są wykrywane. Używaj metody GET zamiast HEAD, bo odpowiedzi na HEAD nie mają treści, którą można by przeszukać.

Jak wyszukiwarki traktują przekierowania po stronie klienta

  • Natychmiastowy meta refresh (opóźnienie 0): Google traktuje go jak przekierowanie stałe, podobnie jak 301.
  • Opóźniony meta refresh: jest traktowany jak przekierowanie tymczasowe, więc pierwotny adres URL zwykle pozostaje w indeksie.
  • Przekierowania JavaScript: Google widzi je dopiero po wyrenderowaniu strony, co może nastąpić długo po jej pobraniu przez robota. Wiele innych robotów i większość botów generujących podgląd linków w ogóle nie uruchamia JavaScriptu.

Google zaleca przekierowania po stronie serwera wszędzie tam, gdzie da się je skonfigurować, a meta refresh jako rozwiązanie zastępcze, np. na hostingu statycznym, który nie może wysłać kodu 301.

Dostępność i wygoda użytkowników

Przekierowania z opóźnieniem to problem z dostępnością: osoby korzystające z czytników ekranu lub po prostu wolniej czytające tracą orientację, gdy strona nieoczekiwanie się zmienia. WCAG uznaje meta refresh z opóźnieniem za błąd (F40), a natychmiastowe przekierowanie z opóźnieniem 0 za akceptowaną technikę (H76).

Jeśli musisz przekierowywać w HTML, użyj opóźnienia 0, dodaj tag canonical wskazujący nowy adres URL i umieść na stronie widoczny link do niego dla użytkowników, których przeglądarka nie wykona odświeżenia.

Poradniki

Najczęściej zadawane pytania

Czy meta refresh przekazuje wartość SEO tak jak 301?

Google traktuje natychmiastowy meta refresh (opóźnienie 0) jak przekierowanie stałe, więc w praktyce działa on podobnie do 301. Odświeżenie z opóźnieniem liczy się jako tymczasowe. Inne roboty mogą obsługiwać meta refresh mniej niezawodnie, dlatego zawsze, gdy hosting na to pozwala, używaj przekierowania 301 po stronie serwera.

Dlaczego narzędzie do sprawdzania przekierowań pokazuje 200, choć w przeglądarce strona przekierowuje?

Przekierowanie odbywa się w kodzie HTML lub JavaScripcie strony, a nie w odpowiedzi HTTP. Narzędzia, które podążają tylko za kodami odpowiedzi, np. curl -L, zatrzymują się na stronie z kodem 200. TrueURL przeszukuje treść strony i pokazuje przekierowanie po stronie klienta jako osobny przeskok.

Jakie opóźnienie powinien mieć meta refresh?

0, jeśli celem jest przekierowanie. Każde opóźnienie sprawia, że Google traktuje je jako przekierowanie tymczasowe, każe użytkownikom czekać i powoduje problemy z dostępnością. Opóźnienie ma sens tylko na stronie, która najpierw musi wyświetlić komunikat, a taka strona powinna też mieć wyraźny link, by przejść dalej.

Czy TrueURL wykrywa każde przekierowanie JavaScript?

Nie, tylko proste, bezwarunkowe przekierowania ze stałym docelowym adresem URL w kodzie HTML strony, np. location.href = '...', window.location = '...' lub location.replace('...'), również wewnątrz setTimeout na najwyższym poziomie skryptu. Przekierowania w zewnętrznych plikach skryptów, zależne od warunków, wywoływane działaniami użytkownika lub z wyliczanym adresem URL wymagają uruchomienia w prawdziwej przeglądarce. Jeśli łańcuch zatrzymuje się na stronie, o której wiesz, że przekierowuje, to prawdopodobnie właśnie dlatego.

Dlaczego witryna miałaby używać meta refresh zamiast 301?

Zwykle dlatego, że nie może wysyłać przekierowań HTTP: działa na hostingu statycznym bez reguł przekierowań, w kreatorze stron lub na starym CMS-ie. Niektóre skracacze linków i systemy śledzenia kliknięć również używają przekierowań HTML, aby najpierw uruchomić skrypty analityczne lub kontrolować, jaki adres strony odsyłającej (referrer) zobaczy strona docelowa.

Czy żądanie HEAD wykrywa meta refresh?

Nie. Odpowiedź na HEAD ma nagłówki, ale nie ma treści, więc nie ma kodu HTML do przeszukania. TrueURL ostrzega, gdy sprawdzasz metodą HEAD – w tym narzędziu używaj GET.