Błąd 404 Not Found pojawia się wtedy, gdy użytkownik lub robot wyszukiwarki próbuje otworzyć adres URL, pod którym nie znajduje się już dostępny zasób. W sklepie PrestaShop może się to zdarzyć między innymi po usunięciu produktu, zmianie struktury adresów URL, usunięciu kategorii czy przeprowadzeniu migracji.
Naturalnym pomysłem może wydawać się automatyczne przekierowanie każdego takiego adresu na stronę główną sklepu. Użytkownik zamiast komunikatu 404 zobaczy wtedy działającą stronę i będzie mógł kontynuować przeglądanie oferty.
Takie rozwiązanie ma jednak istotną wadę: masowe przekierowywanie wszystkich nieistniejących adresów na stronę główną nie jest zalecaną praktyką SEO.
Czy warto przekierowywać wszystkie błędy 404 na stronę główną?
Najczęściej – nie.
Kod odpowiedzi 404 pełni ważną funkcję. Informuje przeglądarkę, użytkownika, roboty Google i inne systemy, że pod wskazanym adresem nie znajduje się żądany zasób.
Jeżeli każdy nieistniejący adres przekierujemy kodem 301 na stronę główną, wyszukiwarka otrzyma informację, że stary adres został trwale przeniesiony właśnie tam.
Problem polega na tym, że strona główna zazwyczaj nie jest odpowiednikiem usuniętego produktu czy kategorii.
Przykładowo adres:
/buty/nike-air-max-xyz
nie powinien automatycznie prowadzić do:
/
tylko dlatego, że produkt został usunięty.
Dla użytkownika również może być to mylące. Kliknął link prowadzący do konkretnego produktu, a bez żadnego wyjaśnienia znalazł się na stronie głównej sklepu.
Przekierowanie 301 czy błąd 404?
Kod 301 Moved Permanently powinien być wykorzystywany przede wszystkim wtedy, gdy stary zasób posiada rzeczywisty odpowiednik pod nowym adresem.
Jeżeli przykładowo zmieniliśmy URL produktu:
/12-stara-nazwa-produktu.html
na:
/12-nowa-nazwa-produktu.html
warto utworzyć przekierowanie:
/12-stara-nazwa-produktu.html
→ 301 →
/12-nowa-nazwa-produktu.html
Jest to logiczne zarówno dla użytkownika, jak i wyszukiwarki.
Jeżeli natomiast produkt został trwale usunięty i nie istnieje jego odpowiednik, pozostawienie prawidłowo obsłużonego błędu 404 może być lepszym rozwiązaniem niż przypadkowe przekierowanie na stronę główną.
A co z wycofanymi produktami?
W sklepie internetowym sytuacja jest nieco bardziej skomplikowana, ponieważ nie każdy produkt ze stanem magazynowym 0 powinien być natychmiast usuwany.
Jeżeli produkt jest tylko chwilowo niedostępny, jego strona może pozostać aktywna. Możemy wyświetlić informację o braku towaru, zaproponować powiadomienie o dostępności albo pokazać podobne produkty.
Jeżeli produkt został definitywnie wycofany, warto przeanalizować, czy istnieje jego bezpośredni zamiennik.
Jeżeli tak, można zastosować przekierowanie 301 do odpowiedniego produktu.
Jeżeli dokładnego zamiennika nie ma, czasami sensowne może być przekierowanie do bardzo blisko powiązanej kategorii, ale tylko wtedy, gdy rzeczywiście pomaga to użytkownikowi.
Nie należy natomiast automatycznie kierować każdego usuniętego produktu na stronę główną.
Jak PrestaShop 1.7 obsługuje stronę 404?
W PrestaShop za obsługę nieistniejących stron odpowiada między innymi kontroler PageNotFoundController.
W różnych instalacjach można również spotkać jego override, np. w:
override/controllers/front/PageNotFoundController.php
Jeżeli plik override nie istnieje, nie oznacza to błędu – dana instalacja może po prostu nie posiadać nadpisanej wersji tego kontrolera.
Nie zaleca się również modyfikowania plików znajdujących się bezpośrednio w katalogach rdzenia PrestaShop. Aktualizacja systemu może nadpisać takie zmiany.
Jak wygląda przekierowanie wszystkich 404 na stronę główną?
Technicznie możliwe jest zmodyfikowanie obsługi błędu 404 tak, aby zamiast strony błędu wykonywane było przekierowanie.
Można spotkać rozwiązania wykorzystujące kod podobny do:
public function initContent()
{
header('HTTP/1.1 301 Moved Permanently');
Tools::redirect(__PS_BASE_URI__);
exit();
}
Efektem będzie przekierowywanie obsługiwanych przez ten kontroler nieistniejących stron do strony głównej sklepu.
Nie jest to jednak rozwiązanie, które zalecałbym jako domyślną konfigurację PrestaShop.
Problemem nie jest samo działanie kodu, ale jego logika – każdy nieistniejący URL zostaje potraktowany tak, jak gdyby został trwale przeniesiony na stronę główną.
Dlaczego masowe przekierowanie 404 może zaszkodzić SEO?
Wyobraźmy sobie sklep, z którego usunięto 500 produktów.
Jeżeli każdy stary URL otrzyma przekierowanie 301 do strony głównej, wyszukiwarka zobaczy setki różnych adresów prowadzących do jednego, zazwyczaj niepowiązanego tematycznie miejsca.
Takie przekierowania mogą zostać potraktowane jako nieprzydatne lub prowadzić do sytuacji interpretowanej jako soft 404.
Nie należy więc zakładać, że:
404 → 301 → strona główna
jest automatycznie korzystniejsze dla SEO niż prawidłowa odpowiedź:
404 Not Found
Sam błąd 404 nie jest czymś, czego za wszelką cenę trzeba pozbywać się z witryny.
Problemem są przede wszystkim błędy wynikające z nieprawidłowej struktury strony, uszkodzonych linków wewnętrznych lub utraty wartościowych adresów, które powinny zostać przekierowane do nowych odpowiedników.
Co zrobić zamiast przekierowywania wszystkich stron 404?
Najlepszym rozwiązaniem jest podejście zależne od przyczyny powstania danego adresu.
Jeżeli strona została przeniesiona – zastosuj przekierowanie 301 do nowego odpowiednika.
Jeżeli produkt został zastąpiony nowym modelem – rozważ 301 do nowego produktu.
Jeżeli zmienił się adres kategorii – przekieruj stary URL do nowej kategorii.
Jeżeli strona została usunięta i nie posiada odpowiednika – pozwól serwerowi zwrócić prawidłowy kod 404 lub, w odpowiednich przypadkach, 410 Gone.
Jeżeli natomiast błąd powstał przez nieprawidłowy link wewnętrzny – przede wszystkim popraw link znajdujący się w sklepie.
Jak przygotować dobrą stronę 404 w PrestaShop?
Pozostawienie kodu 404 nie oznacza, że użytkownik musi zobaczyć pustą lub nieprzyjazną stronę z komunikatem o błędzie.
Dobrze zaprojektowana strona 404 może zawierać:
- jasną informację, że wskazanej strony nie udało się znaleźć,
- link do strony głównej,
- wyszukiwarkę produktów,
- odnośniki do najważniejszych kategorii,
- popularne lub polecane produkty,
- możliwość powrotu do poprzedniej strony,
- prostą nawigację pozwalającą kontynuować zakupy.
W ten sposób zachowujemy prawidłową odpowiedź HTTP 404, a jednocześnie pomagamy użytkownikowi znaleźć interesujący go produkt.
404 w PrestaShop – nie zawsze trzeba wykonywać przekierowanie
Automatyczne przekierowanie wszystkich stron 404 na stronę główną jest technicznie możliwe, ale nie powinno być traktowane jako uniwersalna metoda optymalizacji PrestaShop 1.7.
Znacznie lepszym rozwiązaniem jest tworzenie przekierowań tylko wtedy, gdy stary adres posiada logiczny odpowiednik.
W przypadku sklepów często zmieniających ofertę warto również przygotować procedurę obsługi wycofywanych produktów. Niektóre strony można pozostawić dostępne z informacją o braku produktu, inne przekierować do bezpośredniego następcy, a jeszcze inne prawidłowo usunąć.
Najważniejsza zasada jest prosta: przekierowanie powinno prowadzić użytkownika tam, gdzie rzeczywiście znajdzie treść odpowiadającą temu, czego szukał.
Jeżeli takiej strony nie ma, dobrze przygotowana strona 404 jest zazwyczaj lepszym rozwiązaniem niż automatyczne przekierowanie na stronę główną.