Przekierowanie znacznikiem meta refresh
W czystym HTML przekierowanie to znacznik <meta http-equiv="refresh"> w <head> starej strony:
<meta http-equiv="refresh" content="0; url=https://example.com/new-page">
Liczba to opóźnienie w sekundach, potem średnik, potem url= i adres docelowy. 0 przekierowuje zaraz po wczytaniu strony. Oto kompletny plik "strona została przeniesiona". Opóźnienie ustawiono na godzinę, żeby ten podgląd został na miejscu; na prawdziwej stronie używa się 0 albo kilku sekund:
Dwa zabezpieczenia sprawiają, że strona jest bezpieczna: widoczny link (dla każdego, czyja przeglądarka nie wykona odświeżenia, i dla użytkowników czytników ekranu, którzy chcą sami zdecydować) oraz <link rel="canonical">, który mówi wyszukiwarkom, który URL jest właściwy. Jeśli zmienisz tu opóźnienie na 0, sam podgląd przejdzie na example.com; naciśnij Reset, żeby odzyskać przykład.
Automatyczne odświeżanie strony
Pomiń URL, a strona sama przeładuje się po upływie opóźnienia. content="5" przeładowuje co 5 sekund. Pierwsze pole poniżej to mała strona z tym znacznikiem, więc możesz to obserwować: jej czas wczytania skacze co 5 sekund, a tekst wpisany w jej pole znika przy przeładowaniu. Drugie pole aktualizuje zegar przez JavaScript i zachowuje twój tekst:
Odświeżenie wczytuje całą stronę od nowa, więc to, co robił na niej czytelnik, zostaje przerwane. Można to zaakceptować na stronie, z którą nikt nie wchodzi w interakcję, na przykład na ekranie statusu na ścianie. W dashboardach, wynikach i kanałach aktualizuj tylko zmieniającą się część, tak jak robi to drugie pole.
Przekierowanie w JavaScript
Gdy przekierowanie zależy od czegoś, co wie tylko przeglądarka (wybór użytkownika, stan zalogowania, rozmiar ekranu), użyj JavaScript:
// Replaces the current page in the history: Back skips it
location.replace('https://example.com/new-page');
// Adds a history entry: Back returns to this page
location.href = 'https://example.com/new-page';
Do przekierowania prawie zawsze potrzebujesz location.replace. Przy location.href naciśnięcie Wstecz trafia na stronę, która przekierowała, a ta znowu przekierowuje i użytkownik utyka w miejscu.
Wybieraj przekierowanie na serwerze
Meta refresh albo skrypt działa dopiero wtedy, gdy przeglądarka pobierze starą stronę. Przekierowanie na serwerze odpowiada na żądanie kodem statusu i nowym adresem, zanim zostanie wysłany jakikolwiek HTML:
- 301 (moved permanently) lub 308: strona na stałe ma nowy adres. Wyszukiwarki przenoszą pozycję starego URL na nowy.
- 302 (found) lub 307: tymczasowe przeniesienie; stary URL pozostaje głównym.
Konfiguracja zależy od hostingu. Kilka popularnych form:
# Apache (.htaccess)
Redirect 301 /old-page https://example.com/new-page
# nginx (inside a server block)
location = /old-page { return 301 https://example.com/new-page; }
# Netlify or Cloudflare Pages (_redirects file)
/old-page /new-page 301
Używaj meta refresh, gdy w ogóle nie możesz zmienić serwera, na przykład na statycznym hostingu bez reguł przekierowań. Google traktuje natychmiastowy meta refresh jak przekierowanie stałe, a opóźniony jak tymczasowe, więc opóźnienie 0 jest bliższe 301.
Przekierowania z opóźnieniem a dostępność
Przekierowanie z opóźnieniem może zabrać czytelnika w połowie zdania. Wytyczne dostępności (WCAG) uznają przekierowania z odliczaniem za błąd; natychmiastowe przekierowanie jest w porządku. Jeśli musisz czekać, napisz to na stronie ("Za 10 sekund nastąpi przekierowanie") i zawsze dodaj link, żeby każdy mógł przejść we własnym tempie.
Częste błędy
- Pętla przekierowań. Dwie strony, które odświeżają się nawzajem, odbijają czytelnika w nieskończoność. Sprawdź, dokąd kieruje strona docelowa.
- Względny URL, który wskazuje złe miejsce.
url=new-pagejest rozwiązywany względem bieżącego URL, więc z/docs/oldprowadzi do/docs/new-page. W razie wątpliwości użyj pełnej ścieżki, na przykładurl=/new-page. - Brak zapasowego linku. Zawsze dodaj w treści zwykły link do nowej strony.
- Używanie
location.hrefdo przekierowań. Przycisk Wstecz prowadzi wtedy do pętli przekierowań. Użyjlocation.replace. - Meta refresh, gdy masz kontrolę nad serwerem. Skonfiguruj zamiast tego 301; jest szybsze i jaśniejsze dla każdego narzędzia.
Najczęściej zadawane pytania
Jak przekierować stronę HTML na inną stronę?
Dodaj <meta http-equiv="refresh" content="0; url=https://example.com/new"> do <head> starej strony, a w treści zwykły link do nowej strony jako rozwiązanie zapasowe. Jeśli masz kontrolę nad serwerem, lepsze jest przekierowanie 301.
Jak zrobić przekierowanie po 5 sekundach w HTML?
Ustaw liczbę przed średnikiem na opóźnienie w sekundach: <meta http-equiv="refresh" content="5; url=https://example.com/new">. Napisz na stronie, że czytelnik zostanie przekierowany, i daj mu link.
Jak sprawić, żeby strona sama się odświeżała?
Użyj meta refresh z opóźnieniem i bez URL: <meta http-equiv="refresh" content="30"> przeładowuje stronę co 30 sekund. Przeładowuje całą stronę i przerywa czytelnikowi, więc przy danych na żywo zwykle lepiej aktualizować fragment strony przez JavaScript.
Czy przekierowanie meta refresh szkodzi SEO?
Google za nim podąża: natychmiastowy meta refresh (opóźnienie 0) traktuje jak przekierowanie stałe, a opóźniony jak tymczasowe. Zalecanym sposobem nadal jest 301 po stronie serwera, bo jest szybsze i rozumie je każdy robot i każda przeglądarka.
Jak zrobić przekierowanie w JavaScript?
Użyj location.replace('https://example.com/new'). Zastępuje bieżącą stronę w historii, więc przycisk Wstecz nie wraca na stronę, która przekierowała. location.href = url też działa, ale zostawia starą stronę w historii.