Dodatkowe przekierowania nie są niczym dobrym dla pozycjonowania naszej strony. Roboty indeksujące, odwiedzając naszą stronę – mają przydzieloną ograniczoną ilość zasobów (tzw. „Crawl budget”). Przez dodatkowe przekierowania, które prowadzą użytkownika z punktu A. do punktu B. robot traci te zasoby, przez co może nie dotrzeć do istotnych dla nas stron – np. nowego wpisu blogowego.
Czym właściwie jest przekierowanie 301?
Zacznijmy od wyjaśnienia, czym w ogóle jest przekierowanie 301? Sama liczba 301 to tak zwany kod statusu HTTP. Czyli komunikat zwracany przez serwer po wysłaniu przez naszą przeglądarkę żądania (request) o pobranie jakiegoś zasobu. W przypadku, gdy serwer znalazł zasób, o który go prosimy, zwraca on liczbę / kod statusu 200, w przypadku, gdy go nie znalazł, zwróci nam status 404. W przypadku, gdy zasób, o który pytamy, jest dostępny pod innym adresem, skorzysta właśnie z kodu 301.
Kod odpowiedzi 301 oznacza, że jest to przekierowanie stałe. Analogicznie kod odpowiedzi 302 oznacza przekierowanie tymczasowe.
Jak sprawdzić kod odpowiedzi serwera?
Jest na to kilka sposobów, ale najprostsze i jednocześnie najwygodniejsze to darmowe narzędzie online httpstatus.io lub analogicznie skorzystanie z wtyczki do przeglądarki, np. Link Redirect Trace.
Jak usunąć przekierowanie 301 z pierwszej strony paginacji?
Teraz gdy wiesz już czym jest przekierowanie 301 i dlaczego warto je poprawić, przejdźmy do głównego tematu tego artykułu. WooCommerce jest to znana i popularna wtyczka na WordPress, pozwalająca zamienić naszego bloga w sklep internetowy. Posiada w swojej budowie problem, którym dziś się zajmiemy, a jest to przekierowanie pierwszej strony paginacji (lub w niektórych przypadkach duplikat) na stronę główną danego listingu.
Jak rozpoznać ten problem?
Przejdź na dowolny listing produktów WooCommerce np. kategorię. Twój link powinien wyglądać mniej więcej tak:
https://domena.pl/kategoria/
przejdź na drugą stronę paginacji. Link Twojej aktualnej strony powinien wyglądać mniej więcej tak:
https://domena.pl/kategoria/page/2/
Najedź na link do poprzedniej strony, czyli numer 1 lub analogicznie na strzałkę w lewo. Jeśli Twój link wygląda tak:
https://domena.pl/kategoria/page/1/
a po kliknięciu w niego, w pasku adresu wyświetla Ci się znowu pierwszy adres, czyli:
https://domena.pl/kategoria/
To właśnie zostałeś przekierowany ze strony /kategoria/page/1/ na stronę /kategoria/.
Jeśli jednak nie zostałeś przekierowany na główną stronę kategorii, a Twój aktualny adres URL w pasku nawigacji to /kategoria/page/1/ – mimo, że zacząłeś ze strony /kategoria/ – to masz o wiele poważniejszy problem, czyli duplikację treści między tymi dwoma podstronami.
Dobra wiadomość jest taka, że nasze rozwiązanie pomoże pozbyć się przekierowania w obu przypadkach. Zła wiadomość jest taka, że domyślnie ta strona powinna przekierować na główną stronę danej kategorii, więc nawet jeśli poprawimy paginację, ten link nadal może gdzieś się znajdować i może być wymagana konsultacja ze specjalistą.
Wiesz już, że powyższy problem występuje na Twojej stronie? Teraz pokażemy Ci jak go rozwiązać!
Jak rozwiązać problem z paginacją na WooCommerce?
Całe rozwiązanie ograniczy się do fragmentu kodu, który będzie trzeba wkleić w odpowiednim pliku naszego motywu.
/* Fix przekierowania z paginacji WooCommerce */
add_filter('paginate_links', function($new_link)
{
$p = strpos($new_link, 'page/1/');
if($p !== false)
$new_link = substr($new_link, 0, $p);
return $new_link;
});
powyższy kod należy w całości skopiować i wkleić w pliku functions.php naszego aktualnego motywu.
Jak działa powyższy kod?
W dużym uproszczeniu, kiedy tylko nasz motyw zechce wygenerować stronę i poprosi serwer o link do strony paginacji – ten przepuści każdy taki link przez przygotowany powyżej filtr. Filtr ten, przeszukuje każdy z linków w poszukiwaniu fragmentu tekstu „page/1/”, który występuje tylko dla linków do strony pierwszej i go wytnie.
Jak wdrożyć powyższy kod na swojej stronie?
Żeby to zrobić, należy wykonać zasadniczo dwa kroki:
1. Sprawdzić jak nazywa się nasz aktualnie używany na stronie motyw,
2. Znaleźć plik functions.php dla danego motywu i wkleić podany fragment.
Aby sprawdzić aktualny motyw:
Kokpit -> Wygląd -> Motywy;
Aktualnie używany na naszej stronie motyw pojawi się na pierwszym miejscu i powinien mieć napis np.
„Aktywny: NAZWA-MOTYWU”.
Aby edytować plik functions.php:
Kokpit -> Wygląd -> Edytor motywu -> Wybierz z rozwijanej listy w prawym górnym rogu swoją nazwę aktywowanego motywu -> Kliknij „Wybierz”;
Po wykonaniu tych kroków powinna wyświetlić się lista wszystkich plików tego motywu. W liście po prawej stronie należy odnaleźć plik functions.php i go kliknąć. Po otwarciu pliku wystarczy zjechać na sam dół i wkleić podany fragment kodu. Po wszystkim wystarczy kliknąć „Zaktualizuj plik” i odświeżyć stronę z błędnym linkiem do strony pierwszej. Po poprawnie wprowadzonej zmianie link do strony pierwszej będzie prowadzić bezpośrednio do /kategoria/ zamiast /kategoria/page/1/ przez co nie będzie dodatkowego przekierowania. 🙂
Uwagi i pomoc dla osób nie-technicznych:
W pliku functions.php trzeba być ostrożnym, wystarczy usunąć jeden zły znak i cała strona może przestać działać.
W takim wypadku należy skontaktować się z hostingiem / twórcą strony z prośbą o pomoc lub przywrócenie kopii zapasowej. Analogicznie jeśli wiesz, co zostało zmodyfikowane, poproś o dostęp (lub wygeneruj go w panelu hostingu) do serwera FTP i znajdź na nim folder wp-content/themes/NAZWA-MOTYWU zawiera on te same pliki, jak te, które mogliśmy edytować z poziomu Kokpitu. Znajdzie się tam również zmodyfikowany plik functions.php. Należy go pobrać, otworzyć dowolnym edytorem tekstu, poprawić nasz błąd, zapisać i wrzucić na serwer nadpisując przy tym stary plik.