Po jednej zmianie cały sklep zwraca 404
Publikacja: · Grzegorz Rapczyński
Objaw jest bardzo charakterystyczny i od razu zawęża poszukiwania: strona główna otwiera się normalnie, a każda podstrona zwraca 404. Kategorie, produkty, regulamin - wszystko poza jednym adresem. W sklepie na PrestaShop odpowiada za to jeden mechanizm: przepisywanie przyjaznych adresów.
W zdecydowanej większości przypadków oznacza to jedno: przepisywanie adresów przestało działać. Sklep używa ładnych adresów typu /buty-meskie, ale takie pliki fizycznie nie istnieją - serwer musi je tłumaczyć na wewnętrzne wywołania. Gdy to tłumaczenie padnie, zostaje tylko strona główna.
Test, który rozstrzyga w pół minuty
Wejdź do panelu i wyłącz przyjazne adresy URL w ustawieniach SEO. Sklep zacznie używać brzydkich adresów z parametrami.
- Podstrony zaczęły działać - potwierdzone, problem jest w przepisywaniu adresów. Czytaj dalej.
- Nadal 404 - to nie adresy, tylko coś poważniejszego: brakujące pliki albo błędna konfiguracja katalogu głównego.
Jeśli nie masz dostępu do panelu, dojdziesz do tego samego wniosku inaczej: otwórz produkt przez adres z parametrem. Jeśli zadziała, a ładny adres nie - masz odpowiedź.
Cztery przyczyny, od najczęstszej
Nadpisany albo skasowany plik .htaccess. Ten plik zawiera reguły przepisywania. Nadpisuje się go przy wgrywaniu plików przez FTP, gdy program synchronizuje katalog, albo kasuje przy porządkach - bo zaczyna się od kropki i bywa niewidoczny. Sklep potrafi wygenerować go na nowo: wystarczy zapisać ustawienia SEO w panelu.
Serwer nie ma włączonego modułu przepisywania adresów. Po przeniesieniu na nowy hosting albo po zmianie konfiguracji. Plik z regułami jest, tylko nikt ich nie czyta. To pytanie do obsługi hostingu i zwykle jedno kliknięcie po ich stronie.
Serwer ignoruje plik .htaccess. Osobny przypadek - moduł działa, ale konfiguracja zabrania czytania reguł z katalogu. Objaw identyczny, rozwiązanie też leży po stronie hostingu.
Błąd składni w regułach. Po ręcznej edycji. Tu objaw bywa inny - zamiast 404 częściej pojawia się błąd 500, ale przy niektórych konfiguracjach wychodzi jedno i drugie.
Szczególny przypadek: działa część sklepu
Jeśli 404 dotyczy tylko niektórych adresów, to nie jest awaria przepisywania, tylko coś zupełnie innego:
- Same produkty zwracają 404 - produkty są wyłączone albo nie mają kategorii domyślnej. Rozpisałem to w tekście o tym, dlaczego produkt nie wyświetla się w sklepie.
- 404 pojawia się po zmianie nazw produktów - adresy się zmieniły i stare przestały istnieć. To normalne i naprawia się przekierowaniami 301, nie grzebaniem w konfiguracji.
- 404 tylko na jednym języku - brakuje ustawień adresów dla tej wersji językowej.
Co zrobić zaraz po naprawie
Awaria trwająca dłużej niż kilka godzin zostawia ślad w Google - robot zdąży zobaczyć 404 na wielu adresach naraz i usunąć je z indeksu.
- Sprawdź kilka adresów przez narzędzie sprawdzania URL w Search Console - musi zwracać 200.
- Zgłoś ponownie mapę witryny, żeby przyspieszyć powtórne zeskanowanie.
- Przez następny tydzień obserwuj raport indeksowania. Skok liczby błędów 404 jest normalny, opadanie też - byle opadało.
Pozycje zwykle wracają same w ciągu kilku tygodni. Panikować należy dopiero wtedy, gdy po miesiącu adresy nadal są poza indeksem.
Najczęstsze pytania
Czy mogę sam edytować plik .htaccess?
Możesz, jeśli zrobisz kopię przed zmianą i zapiszesz plik w kodowaniu UTF-8 bez znacznika BOM. Własne reguły wpisuje się poza sekcją zarządzaną przez sklep, bo tamtą sklep nadpisuje przy każdej regeneracji.
Sklep wygenerował plik, a dalej nie działa. Dlaczego?
Najprawdopodobniej serwer w ogóle go nie czyta. To ustawienie po stronie hostingu i trzeba je zgłosić obsłudze - z poziomu sklepu nic tu nie zrobisz.
Czy warto trzymać brzydkie adresy, skoro działają?
Nie jako rozwiązanie docelowe. Adresy z parametrami są trudniejsze do zapamiętania, gorzej wyglądają w wynikach wyszukiwania, a przejście na nie i z powrotem oznacza dwukrotną zmianę wszystkich adresów w sklepie.
Sklep leży, a hosting odsyła do programisty
Jeśli utknąłeś między obsługą hostingu a sklepem, napisz - ustalę, po której stronie jest problem, i zgłoszę go konkretnie. Formularz kontaktowy, 881 932 088 lub kontakt@grvision.pl.