Przekierowanie strony w WordPress

Pisząc teksty w witrynie, po pewnym czasie będziemy je z różnych powodów usuwać lub przenosić w inne miejsca. Ponadto zanim doszlifujemy nasz serwis, nie unikniemy błędów w wyniku których wyszukiwarki zindeksują niechciane strony – np. błędnie otagowane, wygenerowane automatycznie przez wtyczki itd. Domyślnie użytkownik trafiając pod taki nieistniejący adres, otrzyma komunikat z błędem 404 (strona nie została znaleziona). W wielu przypadkach jednak chcemy tego uniknąć i sprawić, by trafił albo do właściwej treści, albo na stronę główną lub kategorii. W tym celu musimy zrobić przekierowanie strony w WordPress.

aliexpress

Użytkownik korzystający z naszej witryny, poza samą treścią otrzymuje także komunikaty z serwera. Przykładowo – otwarcie strony z dostępnym artykułem spowoduje, że serwer wyśle kod o numerze 200 (to chcemy). Jeżeli strony nie uda się załadować, gdyż nie istnieje pod wskazanym adresem – kod 404 (tego unikamy).

Sprawdź również:

Kurs tworzenia stron internetowych na WordPress

Błędy dostępu

Odwiedzający stronę, może zobaczyć jeden z kilku rodzajów błędów, które są określone specyficznymi kodami. Najczęstszym jest błąd 404 oznaczający brak treści pod szukanym adresem. W takiej sytuacji najczęściej trafi na odpowiednio przygotowaną stronę (zwykle wbudowaną w szablon) w którym uzyska informacje o tym, że „szukana strona nie istnieje”. Jeżeli wszystko poszło prawidłowo, klient otrzymuje najczęściej kod 200 (jest to transparentne, ale warto zanotować w pamięci).

Błędy po stronie użytkownika

Błędy od 400-499 są spowodowane przez użytkownika.

  • 401 – nie udało się zalogować
  • 403 – brak dostępu (przykładowo – treść tylko dla zalogowanych lub użytkownik próbuję dostać się tam, gdzie nie powinien)
  • 404 – strona, plik, zasób nie istnieje

Błędy po stronie serwera

Błędy od 500-599 to zwykle przyczyna nasza, bądź firmy na której działa nasza strona.

  • 500 – wewnętrzny błąd serwera. Zwykle oznacza, że ktoś coś namieszał – my (może ostatnio dodana wtyczka?), albo dostawca serwera (zapewne naprawia i strona się wkrótce pojawi).
  • 503 – serwer nie jest dostępny, np. nastąpiło jego przeciążenie (zbyt duży ruch) lub coś po prostu padło po stronie firmy hostingowej

Kody przekierowań

Podobnie jak to ma miejsce z błędami, przekierowania strony w WordPress także są powiązane z kodami. Przykładowo – kiedy użytkownik wygeneruje błąd 404 (pod podanym adresem nic nie ma), możemy sprawić aby zamiast wspomnianego błędu otrzymał adres nowej strony. Zwykle oznacza to automatyczne jej załadowanie. Ponadto tym sposobem informujemy również wyszukiwarki, że adres się zmienił i ma usunąć stary.

  • 301 – stałe przekierowanie. Najczęściej używane. Oznacza, że treść została na stałe przeniesiona w nowe miejsce i pod starym już jej nie ma i nie będzie.
  • 302 – tymczasowe przekierowanie. Tymczasowo można znaleźć treść w nowym miejscu. Jest to sygnał dla wyszukiwarki by nie usuwały starego adresu z pamięci. Używane najczęściej podczas testów A/B.
  • 303 – zobacz inne. Używane przy przekierowywaniu formularzy z wypełnionymi danymi metodą POST.
  • 304 – treść nie uległa zmianie. Informuje przeglądarkę użytkownika, że dane zawarte w jej pamięci (od ostatniej wizyty) nie uległy zmianie
  • 305 – dostęp tylko przez serwer proxy. W kodzie jest podany adres serwera.
  • 307 – tymczasowe przekierowanie. Działa podobnie jak 302, ale wymusza, aby „zapytanie” o dostęp do treści było identyczne
  • 308 – stałe przekierowanie. Działa podobnie do 301, ale wymusza, aby „zapytanie” o dostęp do treści było identyczne. Nie jest obsługiwane przez starsze przeglądarki.

Warto jeszcze wspomnieć o kodzie błędu 310, który oznacza pętlę przekierowań. Jeżeli pod jednym adresem ustawimy przekierowanie na drugi adres, a pod drugim na ten pierwszy to otrzymamy wspomnianą pętlę. Użytkownik będzie przekierowywany w kółko i nigdy nie otrzyma dostępu do treści.

Wtyczka Redirect Redirection

Redirect Redirection to bardzo intuicyjny i darmowy plugin do przekierowania stron w WordPress. Możemy wykonywać wszystkie wymienione wyżej rodzaje przekierowań za wyjątkiem 305 (proxy). Na górze wpisujemy stronę z której ma nastąpić przekierowanie i tą do której użytkownik trafi. Klikamy dodaj przekierowanie i gotowe. Możemy je edytować, albo zmienić rodzaj (domyślnie jest ustawione 301). Ponadto skrypt obsługuje reguły, które przydają się jak przenosimy przykładowo całe kategorie – adres rozpoczyna się od…

przekierowanie strony w WordPress z wykorzystaniem wtyczki Redirect Redirection
Przekierowanie zwykłe
przekierowanie strony w WordPress z wykorzystaniem wtyczki Redirect Redirection - reguły
Przekierowanie z regułą

Dla testów spróbowałem wywołać błąd 310 (pętla przekierowań). Nie udało się. Skrypt wykonał po prostu dwa przekierowania ze starego na nowy adres, a następnie z nowego na stary.

Logi

Bardzo przydatną funkcją są informacje o tym na jakie strony próbowano się dostać (bezskutecznie – błąd 404) i automatyczne ustawienie z tego miejsca nowej – docelowej strony. Przeglądamy logi, naciskamy na Redirect przy stronie z błędem 404 i wskazujemy nowy adres.

przekierowanie strony w WordPress z wykorzystaniem wtyczki Redirect Redirection - logi

Warto jeszcze wspomnieć o czyszczeniu logów. Zgodnie z informacjami uzyskanymi od użytkowników przy bardzo dużej liczbie błędów był problem z czyszczeniem logów (możliwe, że autor już to załatał, bo wtyczka wydaje się być regularnie aktualizowana). Na wszelki wypadek włączmy automatyczne czyszczenie logów, bądź po prostu opróżnijmy listę klikając Delete all logs now.

Przekierowania strony w plikach

w .htaccess

Jeżeli nie chcemy korzystać z wtyczek lub zależy nam na przekierowaniu całej strony, możemy to zrobić w pliku .htaccess lub z wykorzystanie skryptu. Najprościej:

Redirect 301 /stara-strona.php /nowa-strona.php
Redirect 301 https://example.com https://eskim.pl

w kodzie strony – HTML

Możemy podać ilość sekund po jakim nastąpi przekierowanie. Poniżej ustawione na 0, co oznacza – natychmiast.

<head>
	<meta http-equiv="refresh" content="0; url=https://eskim.pl">
</head>

w PHP

<?php
  header(‘Location: https://eskim.pl’, 301);
?>