showing-cart-trolley-shopping-online-sign-graphic

Dlaczego Google pomija produkty w PrestaShop?

Z artykułu dowiesz się:

  • jak czytać raport indeksowania stron w Google Search Console dla sklepu PrestaShop
  • dlaczego filtry ps_facetedsearch potrafią wygenerować setki tysięcy zbędnych adresów
  • jak ustawić adresy kanoniczne i przekierowania produktów w PrestaShop 8 i 9
  • co zrobić z produktami wyłączonymi, wyprzedanymi i usuniętymi
  • które metody przyspieszania indeksowania działają, a które są stratą czasu

Sklep ma 4000 aktywnych produktów, mapa witryny zgłasza 4000 adresów, a Google Search Console pokazuje w indeksie 1100. Pozostałe prawie 3000 kart nie zbiera żadnego ruchu organicznego, choć są poprawnie opisane, mają zdjęcia i ceny. W PrestaShop taka sytuacja prawie nigdy nie wynika z jednej przyczyny. Dlatego zamiast listy ogólnych porad lepiej sprawdza się diagnoza od objawu: każdy status w Search Console wskazuje inny mechanizm, a każdy mechanizm ma w PrestaShop konkretne miejsce, w którym trzeba go naprawić.

Najpierw raport Strony

W Search Console otwórz raport Strony w sekcji Indeksowanie i zamiast patrzeć na liczby dla całej domeny, przefiltruj go według mapy witryny. Jeśli moduł Google Sitemap generuje osobny plik dla produktów, możesz od razu zobaczyć, ile adresów produktowych zgłoszonych przez sklep faktycznie trafiło do indeksu. Liczby dla całej domeny są mylące, bo mieszają produkty z tysiącami adresów filtrów, paginacji i parametrów, których i tak nie chcesz w indeksie.

Każdy status w sekcji „Dlaczego strony nie są indeksowane” to osobna diagnoza. Kliknij status, wybierz kilka przykładowych adresów i sprawdź je narzędziem do sprawdzania adresów URL, najlepiej z testem wersji aktywnej. Test pokazuje, co Google widzi teraz, a nie przy ostatnim skanowaniu, które mogło odbyć się kilka tygodni temu.

Wykryta, ale niezindeksowana

Ten status oznacza, że Google zna adres, ale jeszcze go nie odwiedził. Najczęściej uznał, że skanowanie tej witryny jest zbyt kosztowne w stosunku do spodziewanej wartości. W PrestaShop głównym winowajcą bywa moduł ps_facetedsearch. Każda kombinacja filtrów tworzy nowy adres z parametrem q, na przykład /buty?q=Rozmiar-42/Kolor-Czarny, a przy kilku filtrach w kilkudziesięciu kategoriach liczba możliwych adresów idzie w miliony. W zgłoszeniu na GitHubie projektu PrestaShop opisano sklep, w którym liczba adresów oznaczonych jako kanoniczne wzrosła w dwa miesiące z kilku tysięcy do ponad 300 tysięcy, właśnie przez filtry.

Robot, który spędza czas na permutacjach filtrów, rzadziej dociera do kart produktów. Drugim hamulcem jest czas odpowiedzi serwera. Jeśli TTFB na karcie produktu przekracza sekundę albo zdarzają się błędy 5xx, Google automatycznie zmniejsza tempo skanowania, żeby nie przeciążać sklepu.

Trzecia przyczyna jest typowa dla PrestaShop i łatwo ją przeoczyć. Produkt z widocznością ustawioną na „Tylko wyszukiwanie” nie pojawia się na listach kategorii, więc prowadzą do niego wyłącznie wyniki wewnętrznej wyszukiwarki, których robot nie odwiedza. Taki produkt jest w mapie witryny, ale nie ma do niego żadnego linku wewnętrznego, a Google traktuje osierocone adresy jako mało istotne.

Przeskanowana, ale niezindeksowana

Tu Google odwiedził stronę i świadomie zrezygnował z jej zindeksowania. To problem jakości, nie dostępu. W sklepach PrestaShop najczęściej chodzi o opisy skopiowane od producenta albo z pliku hurtowni. Ten sam tekst występuje wtedy w kilkudziesięciu innych sklepach, a Google nie ma powodu indeksować kolejnej kopii.

Podobnie działa import wariantów jako osobnych produktów. Koszulka w dziesięciu kolorach zaimportowana jako dziesięć kart z identycznym opisem daje dziesięć niemal identycznych stron. Kombinacje w PrestaShop są przeznaczone właśnie do takich przypadków: jedna karta, jeden adres, wybór koloru i rozmiaru w obrębie strony. Osobne karty mają sens tylko wtedy, gdy wariant ma własny popyt w wyszukiwarce i realnie inny opis.

Poprawa jakości nie polega na dopisaniu 300 słów ogólników. Liczy się informacja, której nie ma u konkurencji: wymiary w praktycznym kontekście, zgodność z innymi produktami, skład, sposób montażu, odpowiedzi na pytania, które klienci zadają obsłudze. Karta z tabelą parametrów i dwoma akapitami konkretów wypada lepiej niż długi opis bez treści.

Duplikat bez kanonicznej

Domyślna trasa produktu w PrestaShop 8 zawiera kategorię, na przykład {category:/}{id}-{rewrite}{-:ean13}.html. Zmiana kategorii domyślnej zmienia więc adres produktu, a produkt jest często dostępny także pod starszym adresem i pod adresem technicznym index.php?id_product=. Rozwiązaniem jest ustawienie „Przekieruj do kanonicznego adresu URL” w zakładce Parametry sklepu > Ruch > SEO i URL. Dokumentacja PrestaShop zaleca opcję 301. Przy braku przekierowania każdy alternatywny adres zwraca kod 200 i konkuruje z adresem głównym.

Sprawdź też, czy adres kanoniczny jest spójny we wszystkich miejscach: w tagu rel=”canonical”, w mapie witryny, w menu, w okruszkach i w danych strukturalnych. Jeśli mapa witryny podaje adres z jedną kategorią, a link w menu prowadzi do adresu z inną, Google dostaje sprzeczne sygnały i sam wybiera wersję kanoniczną, nie zawsze tę, której oczekujesz.

Zablokowana przez robots.txt

Generator pliku robots.txt w panelu PrestaShop tworzy plik od nowa i nadpisuje wszystkie reguły dopisane ręcznie. Kto po aktualizacji sklepu kliknął „Generuj plik robots.txt”, mógł bezwiednie usunąć własne blokady albo przywrócić domyślne reguły blokujące katalogi, w których moduły trzymają pliki CSS i JavaScript. Przed każdą regeneracją zrób kopię pliku.

Osobna pułapka dotyczy filtrów. W wersjach 1.7.8 i 8.x domyślny plik nie blokował parametru q, a nowsze wydania łączą blokadę w robots.txt z tagiem noindex. To połączenie działa gorzej, niż wygląda. Robot, któremu robots.txt zabrania wejścia na adres, nie zobaczy na nim tagu noindex ani adresu kanonicznego. Jeśli filtry zdążyły już trafić do indeksu, blokada w robots.txt zamrozi je w statusie „Zindeksowana, mimo blokady w pliku robots.txt”. Kolejność musi być odwrotna: najpierw noindex, odczekanie, aż Google ponownie odwiedzi te adresy i usunie je z indeksu, dopiero potem blokada skanowania.

Warto też sprawdzić, czy motyw w ogóle wypisuje dynamiczny tag robots. Część motywów ma go wpisanego na sztywno w szablonie, więc ustawienia modułu nie mają żadnego efektu.

Produkty wyłączone i usunięte

Po wyłączeniu produktu PrestaShop pozwala wybrać zachowanie adresu: przekierowanie 301 lub 302 do innego produktu, 301 lub 302 do kategorii albo domyślną odpowiedź 404. Do trwałego wycofania oferty wybieraj 301, bo 302 nie przenosi sygnałów na nowy adres. W wersji 9.1.4 zgłoszono błąd, w którym przekierowanie typu „301 do produktu” bez wskazanego produktu docelowego zwraca błąd 500 zamiast 404. Taka sytuacja zdarza się po imporcie z CSV albo po usunięciu produktu docelowego, więc po masowych zmianach warto sprawdzić kody odpowiedzi.

Masowe przekierowanie wycofanych produktów na stronę główną to najgorsze z możliwych rozwiązań. Google rozpoznaje takie przekierowania jako miękkie błędy 404 i nie przenosi na stronę główną żadnych sygnałów. Produkty sezonowe i chwilowo niedostępne lepiej zostawić aktywne, z informacją o braku w magazynie i wartością OutOfStock w danych strukturalnych. Adres zachowuje wtedy historię i wraca do sprzedaży bez ponownego indeksowania.

Tabela diagnostyczna

Status w Search ConsoleTypowa przyczyna w PrestaShopPierwszy krok
Wykryta, niezindeksowanaFiltry q=, wolny serwerOgranicz adresy filtrów
Przeskanowana, niezindeksowanaOpisy producenta, klony wariantówUnikalne opisy, kombinacje
Duplikat bez kanonicznejKategoria w adresiePrzekierowanie 301 do kanonicznego
Zablokowana przez robots.txtRegeneracja plikuPrzywrócenie reguł z kopii
Zindeksowana mimo blokadyBlokada przed noindexNajpierw noindex
Nie znaleziono (404)Produkt wyłączonyPrzekierowanie 301
Błąd serwera (5xx)Tryb konserwacji, przeciążenieLogi serwera, cache

Mity o szybkim indeksowaniu

Na rynku są moduły obiecujące natychmiastowe indeksowanie produktów przez Google Indexing API. Google oficjalnie dopuszcza to API wyłącznie dla ofert pracy i transmisji wideo na żywo. Wysyłanie do niego adresów produktów nie jest przewidzianym zastosowaniem i nie daje gwarancji efektu. Protokół IndexNow działa z Bingiem i kilkoma innymi wyszukiwarkami, ale Google go nie obsługuje. Przycisk „Poproś o zindeksowanie” w Search Console ma dzienny limit i sprawdza się przy kilku kluczowych produktach, nie przy tysiącach adresów.

Niezależnym kanałem jest Google Merchant Center. Produkty z poprawnego pliku produktowego mogą pojawiać się w bezpłatnych wynikach na karcie Zakupy, nawet jeśli ich karty nie zbierają jeszcze ruchu z wyników organicznych. Nie zastępuje to naprawy indeksowania, ale pozwala sprzedawać w czasie, gdy trwają poprawki.

Kolejność prac ma znaczenie. Najpierw usuń to, co marnuje czas robota, czyli adresy filtrów i duplikaty, potem napraw kody odpowiedzi, a dopiero na końcu poprawiaj treść kart, zaczynając od produktów o najwyższej marży. Pierwsze efekty w raporcie Strony widać zwykle po kilku tygodniach, bo Google musi ponownie odwiedzić adresy, które wcześniej odrzucił.

Najczęściej zadawane pytania

Ile trwa indeksowanie nowego produktu w PrestaShop?

Nie ma stałego czasu. W sklepie z dobrym linkowaniem wewnętrznym i szybkim serwerem nowy produkt może trafić do indeksu w ciągu kilku dni, a w sklepie z tysiącami adresów filtrów nawet po kilku tygodniach albo wcale.

Czy blokować filtry ps_facetedsearch w robots.txt?

Tak, ale dopiero wtedy, gdy adresy filtrów nie są już w indeksie. Jeśli Google zdążył je zindeksować, najpierw dodaj noindex i poczekaj na ponowne skanowanie, bo blokada w robots.txt uniemożliwia robotowi zobaczenie tego tagu.

Czy usunąć wyprzedany produkt ze sklepu?

Jeśli wróci do sprzedaży, zostaw go aktywnego z informacją o braku w magazynie i wartością OutOfStock w danych strukturalnych. Jeśli został wycofany na stałe, ustaw przekierowanie 301 do następcy albo do kategorii.

Czy każda kombinacja produktu powinna mieć osobny adres?

Nie. Osobny adres ma sens tylko dla wariantu, którego ludzie szukają pod własną nazwą i który ma odmienny opis. Pozostałe warianty powinny działać jako kombinacje na jednej karcie produktu.

Dlaczego Google indeksuje filtry zamiast produktów?

Filtry generują ogromną liczbę adresów podlinkowanych z każdej kategorii, więc robot trafia na nie częściej niż na karty produktów. Ogranicz ich indeksowanie i upewnij się, że motyw wypisuje dynamiczny tag robots.

Czy moduł SEO rozwiąże problem z indeksowaniem?

Moduł może ułatwić ustawienie tagów, przekierowań i mapy witryny, ale nie naprawi słabych opisów ani wolnego serwera. Przed zakupem sprawdź w Search Console, który status dotyczy większości niezindeksowanych produktów.

Źródła:

PrestaShop 8 documentation – SEO and URLs
https://docs.prestashop-project.org/v.8-documentation/user-guide/configuring-shop/shop-parameters/traffic/seo-and-urls

GitHub PrestaShop – Issue #37689: robots.txt, brak Disallow /*?q=
https://github.com/PrestaShop/PrestaShop/issues/37689

GitHub PrestaShop – Discussion #40335: noindex/nofollow dla adresów ps_facetedsearch
https://github.com/PrestaShop/PrestaShop/discussions/40335

GitHub PrestaShop – Issue #42288: przekierowanie 301-product bez celu zwraca 500
https://github.com/PrestaShop/PrestaShop/issues/42288