Friendly URL w PrestaShop to warstwa routingu, która zamienia adres typu ?controller=product&id_product=12 na czytelny /buty/nike-air-max-90.html. Google traktuje słowa w adresie jako sygnał pomocniczy, a nie samodzielny czynnik rankingowy — realna korzyść to wyższy CTR w wynikach i linki, które da się wkleić w maila, kampanię czy post. Samo włączenie przełącznika zajmuje kilka minut, ale bez testu trzech adresów i świadomych wzorców tras łatwo zafundować sobie 404 na całym sklepie. Poniżej zebraliśmy błędy, które widzimy najczęściej, oraz checklistę wdrożenia.

Czym są friendly URL w PrestaShop i co realnie dają

Adres surowy i adres przyjazny prowadzą do tego samego zasobu — różni je wyłącznie zapis. Surowy: ?controller=product&id_product=12. Przyjazny: /buty/nike-air-max-90.html. Serwer obsłuży oba, ale tylko drugi wkleisz do maila, opisu kampanii Google Ads czy posta na Facebooku bez tłumaczenia klientowi, co znaczy ciąg znaków z pytajnikiem.

Google traktuje słowa w adresie jako sygnał pomocniczy, a nie samodzielny czynnik rankingowy. W dokumentacji Google Search Central o tworzeniu treści dla ludzi nie ma obietnicy skoku pozycji za samą zmianę URL-a — liczy się treść i intencja użytkownika, nie konstrukcja adresu.

Co realnie zyskujesz po wdrożeniu:

Rozróżnienie, które oszczędza rozczarowań: friendly URL to techniczna warstwa routingu. Mapuje adres na kontroler i parametry po stronie PrestaShop. Nie zastępuje title, meta description, treści kategorii ani danych strukturalnych. Sklep z idealnymi adresami i pustymi opisami nadal nie będzie widoczny. To jeden element z wielu — punkt startu do całości prac znajdziesz w naszym wdrożeniowym hubie PrestaShop.

AspektAdres surowyFriendly URL
Czytelność?controller=product&id_product=12/buty/nike-air-max-90.html
Wklejanie w maila lub kampanięwymaga komentarzazrozumiały od razu
Wpływ na rankingbraksygnał pomocniczy, nie czynnik samodzielny
Wpływ na CTR w SERPniższywyższy — adres opisuje treść

Jak włączyć friendly URL w PrestaShop — krok po kroku

W PrestaShop 1.7, 8 i 9 ścieżka jest identyczna: Konfiguracja sklepu → Ruch i SEO (Shop Parameters → Traffic & SEO). W sekcji „Ustawienia URL” znajdziesz przełącznik Przyjazne URL. Zanim go włączysz, załatw trzy rzeczy:

  1. mod_rewrite na Apache. Bez niego plik .htaccess nic nie zrobi. Na serwerze sprawdź: apache2ctl -M | grep rewrite — musi pojawić się rewrite_module.
  2. Kopię .htaccess. Kliknięcie „Zapisz” regeneruje plik i nadpisuje Twoje dopiski: reguły cache, przekierowania 301, blokady botów. Skopiuj plik przed zmianą.
  3. Zrzut bazy i plików. Jeśli coś pójdzie nie tak, wrócisz w kilkanaście minut, a nie w kilka godzin.

Po włączeniu przełącznika wyczyść cache: Parametry zaawansowane → Wydajność → Wyczyść cache. Jeśli przed sklepem stoi Cloudflare lub inny CDN, wyczyść też jego cache — inaczej w podglądzie zobaczysz stare adresy i uznasz, że zmiana nie zadziałała.

Test na trzech adresach — strona główna, kategoria, produkt. Zrób to przed i po zmianie: curl -I https://twojsklep.pl/buty/nike-air-max-90.html. Oczekujesz 200 OK i braku pętli przekierowań. Jeśli produkt zwraca 404, w 9 na 10 przypadków nie wygenerował się .htaccess albo brakuje mod_rewrite.

Nginx. Nie czyta .htaccess. Musisz dopisać w konfiguracji serwera przekierowanie na index.php, np. try_files $uri $uri/ /index.php?$args;. Bez tego każdy przyjazny adres zwróci 404, choć w panelu wszystko wygląda poprawnie. Wymagania środowiska — wersje PHP, rozszerzenia, uprawnienia — opisaliśmy w artykule o wymaganiach serwera dla PrestaShop.

KrokGdzieCo sprawdzić
Włącz mod_rewriteserwer Apacheapache2ctl -M | grep rewrite
Kopia .htaccesskatalog główny sklepuwłasne reguły nie zostaną nadpisane
Włącz przełącznikKonfiguracja sklepu → Ruch i SEOPrzyjazne URL = Tak
Regeneruj .htaccessten sam ekran, przycisk Zapiszplik ma nową datę modyfikacji
Wyczyść cacheParametry zaawansowane → Wydajnośćtakże cache CDN
Testcurl -I na 3 adresach200 OK bez pętli przekierowań

Wzorce tras (route patterns) — jak zbudować strukturę URL

Wzorce tras sterują kształtem adresu. Ustawiasz je w Konfiguracja sklepu → Ruch i SEO → Ustawienia URL, w sekcji „Wzorce”. Każdy placeholder ma ściśle określone znaczenie — pomylenie ich to najczęstsza przyczyna adresów z powtórzonym slugiem albo bez kategorii.

Domyślna trasa produktu to {categories:/}{id}-{rewrite}{-:ean13}.html, co daje np. /buty/sportowe/nike-air-max-90-12.html. Końcówka .html to kosmetyka — PrestaShop i tak renderuje stronę dynamicznie. Daje wrażenie statycznej strony i wiele sklepów tego oczekuje. Ważne: nie mieszaj konwencji (raz .html, raz bez) na jednym sklepie, bo potem mnożą się przekierowania.

Kolejność tras to pułapka numer jeden. Reguły dopasowywane są od góry do dołu — pierwsza pasująca wygrywa. Jeśli ogólna reguła /{rewrite} trafi nad regułę kategorii, przechwyci jej adresy i produkty przestaną się rozwiązywać. Szczegółowe reguły wyżej, ogólne niżej.

Głębokość kategorii. Każdy poziom to kolejny slug. Pięć poziomów po 20 znaków daje ponad 100 znaków plus ID i slug produktu. Techniczny limit PrestaShop to 2048 znaków, ale w SERP widać kilkadziesiąt — adres staje się nieczytelny i traci sens, dla którego go włączasz. Rozwiązanie: skrócić ścieżkę w trasie albo przeprojektować drzewo kategorii. Zmiana wzorca wymaga zapisu i regeneracji .htaccess, a to unieważnia wszystkie stare adresy — przed wdrożeniem na działającym sklepie przygotuj mapę przekierowań 301; plan takich prac opisujemy w artykule o migracji PrestaShop 1.7 do 9. Dokumentacja deweloperska PrestaShop opisuje routing w module Dispatcher: PrestaShop Developer Documentation.

PlaceholderCo wstawiaPrzykład
{id}numeryczne ID zasobu12
{rewrite}slug z nazwynike-air-max-90
{category}slug bieżącej kategoriibuty
{categories}pełna ścieżka kategoriibuty/sportowe
{-:ean13}opcjonalny EAN, pomijany gdy pusty1234567890128

Usuwanie ID z adresów URL — kiedy warto, a kiedy to pułapka

W PrestaShop wzorzec adresu produktu ustawiasz w Ustawienia sklepu → Ruch → SEO i URL, w tabeli tras. Domyślna trasa produktu wygląda tak: {category:/}{id}-{rewrite}{-:ean13}.html, czyli w praktyce /buty/12-nike-air-max-90.html. Usunięcie {id} daje krótszy adres, który lepiej wygląda w mailu i w kampanii, ale zmienia zasady działania trzech mechanizmów.

Kolizje nazw. Sklep odzieżowy miewa dwa produkty o tej samej nazwie, wpisane jako osobne ID (145 i 312). Oba dostają link_rewrite równy koszulka-bawelniana. Bez {id} drugi produkt nie ma czym się odróżnić w adresie — PrestaShop dopisze końcówkę zależną od kolejności importu albo nadpisze istniejący wpis trasy. W katalogu powyżej 2000 SKU z powtarzalnymi nazwami („Torba M”, „Torba L”, „Etui 128 GB”) kolizje są regułą, nie wyjątkiem.

Zmiana nazwy = zmiana adresu. Przy {id} możesz poprawić nazwę produktu, a stary link nadal doprowadzi do celu, bo identyfikatorem pozostaje liczba. Bez {id} każda korekta literówki generuje nowy adres, a PrestaShop nie tworzy przy tym automatycznego przekierowania. Linki z artykułów branżowych, katalogów firm i starych kampanii lądują na 404 — i to są zwykle właśnie te linki, które budowały widoczność.

Test kolizji w 15 minut. Wyeksportuj produkty (Katalog → Produkty → Eksport) albo pobierz dane przez Zaawansowane → SQL Manager zapytaniem SELECT link_rewrite, COUNT(*) FROM ps_product_lang GROUP BY link_rewrite HAVING COUNT(*) > 1. W arkuszu dodaj kolumnę =LICZ.JEŻELI(A:A;A2) i odfiltruj wartości większe od 1. Wynik powyżej zera oznacza, że bez {id} problem masz pewny.

Rekomendacja: zostaw {id}. Rezygnuj tylko wtedy, gdy istnieje realny powód i kontrola nad nazewnictwem, czyli jedna osoba pilnująca, że żadna nazwa się nie powtórzy. Jeśli adresy bez ID już wdrożono i widzisz 404, ustaw w .htaccess regułę 301 mapującą adres z ID na wersję bez ID (Apache: RewriteRule, nginx: return 301) i przetestuj ją przed przełączeniem trasy. Szczegóły techniczne tras opisuje dokumentacja dla deweloperów PrestaShop.

Wariant trasyPrzykładKiedy się sprawdzaGłówne ryzyko
{category:/}{id}-{rewrite}.html/buty/12-nike-air-max-90.htmlKatalog od kilkuset produktów w górę, importy, wielu redaktorówDłuższy adres i widoczne ID w wyniku wyszukiwania
{category:/}{rewrite}.html/buty/nike-air-max-90.htmlMały katalog (do ok. 200 SKU) z jednym opiekunem nazwKolizja slugów oraz 404 przy każdej zmianie nazwy produktu

Wielojęzyczność i wielosklepowość — prefiksy /pl/, /en/ i hreflang

Języki dodajesz w Międzynarodowy → Lokalizacja → Języki, a prefiks w trasach ustawiasz w Ustawienia sklepu → Ruch → SEO i URL. Każda trasa ma osobny wpis dla każdego języka — dotyczy to produktów, kategorii, stron CMS i stron sklepu. Tłumaczenie sluga robisz w karcie produktu, w zakładce SEO: przełącznikiem języka u góry zmieniasz pole „Przyjazny URL” osobno dla PL i EN. To samo ustawienie jest w kategorii. Efekt jest taki, że /pl/buty/nike-air-max-90.html i /en/shoes/nike-air-max-90.html to dwa niezależne adresy, obsługiwane oddzielnie przez router.

Przekierowanie po IP — nie rób tego. Geolokalizacja w PrestaShop (Międzynarodowy → Lokalizacja) potrafi przekierować użytkownika na język kraju, z którego przychodzi. Problem: robot Google najczęściej wchodzi z adresów amerykańskich, więc zobaczy wersję EN, a nie PL, i zaindeksuje niewłaściwą treść. Klient z zagranicy z VPN-em też zobaczy sklep, którego nie chciał. Zamiast przekierowania postaw dyskretny baner z wyborem języka i zapisz decyzję w cookie. Wersja językowa ma być dostępna pod swoim adresem zawsze, bez pośrednich kroków.

Canonical i hreflang. Zasada brzmi: jeden język = jeden URL. PrestaShop generuje znaczniki hreflang na podstawie aktywnych języków, ale wymaga to poprawnych kodów ISO (pl-PL, en-GB, de-DE) i przetłumaczonych slugów. Canonical musi wskazywać na wersję tego samego języka, w której się znajduje — nie na polską. Wersję domyślną oznacz jako x-default. Jeśli po starej konfiguracji ten sam tekst odpowiada i pod /pl/produkt, i pod /produkt, masz duplikat do wyczyszczenia przekierowaniem.

Model adresowaniaPrzykładPlusMinus
Jedna domena i prefiks językasklep.pl/pl/, sklep.pl/en/Cały autorytet w jednym miejscu, jedna property w Search Console, jeden certyfikat SSLAdresy dłuższe o 3–4 znaki
Subdomenypl.sklep.pl, en.sklep.plŁatwe rozdzielenie pracy i konfiguracji między zespołamiOsobne certyfikaty, osobne dane w Search Console, autorytet rozbity na dwa serwisy
Domeny per krajsklep.pl, shop.deNaturalny sygnał lokalny z ccTLDKażda zmiana treści do wykonania dwa razy

Zmiana URL bez utraty ruchu: 301, canonical i sitemap

Migracja adresów bez planu kończy się wypadnięciem części katalogu z indeksu na kilka tygodni. Kolejność działań jest odwrotna do intuicji: najpierw przekierowania, dopiero potem przełącznik w panelu.

  1. Inwentaryzacja. Crawl obecnej wersji sklepu (darmowa wersja Screaming Frog obsłuży do 500 adresów, większe sklepy crawlem partiami) plus eksport URL-i z sitemap.xml. Zapisujesz te ze statusem 200 w kolumnie old_url.
  2. Mapowanie w CSV. Dwie kolumny: old_url i new_url, jeden wiersz na adres. Przy 3000 produktów to jedno popołudnie pracy na eksporcie z bazy, a nie ręczne klikanie.
  3. Wdrożenie 301 przed zmianą. Reguły w .htaccess (Apache) lub w konfiguracji nginx, umieszczone przed regułami PrestaShop. Każdy adres testuj osobno: curl -I https://sklep.pl/stary-adres musi zwrócić kod 301 i nagłówek Location z nowym adresem.
  4. Zmiana wzorców tras w SEO i URL dopiero teraz.

Duplikacja /kategoria/produkt i /produkt. Jeśli wzorzec zawiera {category:/}, a produkt siedzi w dwóch kategoriach, powstają dwa adresy tej samej treści: /obuwie/nike-air-max-90 i /wyprzedaz/nike-air-max-90. Wybierz wersję główną i pilnuj, by canonical wskazywał właśnie na nią. Bez tego Google zdecyduje sam — i podlinkowany zostanie adres, którego nie kontrolujesz.

Sitemap i monitoring. Wygeneruj sitemap od nowa, sprawdź, czy nie ma w niej starych adresów, i zgłoś nową wersję w Search Console (Sitemaps). Potem raport Indeksowanie: przez 2–4 tygodnie sprawdzaj, czy liczba błędów 404 nie rośnie. Krótkotrwały wzrost po migracji 2000-stronicowego sklepu jest normalny; utrzymujący się po dwóch tygodniach oznacza brakującą regułę przekierowania.

EtapCo robiszCzym weryfikujesz
Przed zmianąCrawl starego sklepu i eksport adresów 200 do CSVScreaming Frog, eksport z Search Console
Przed zmianąMapowanie old_url → new_url i wdrożenie reguł 301curl -I: kod 301 oraz nagłówek Location
ZmianaNowe wzorce tras w SEO i URL, korekta linków w menu i CMSPodgląd 3 losowych produktów i 3 kategorii
Po zmianieNowa sitemap.xml i zgłoszenie jej w Search ConsoleRaport Sitemaps: status i liczba wykrytych adresów
Monitoring 2–4 tygodniePrzegląd raportu Indeksowanie i logów serweraSpadek liczby 404 tydzień do tygodnia

Najczęstsze błędy: 404, pętle przekierowań, 500 — jak diagnozować

Zanim cokolwiek zmienisz w panelu, sprawdź stan obecny. Jedno polecenie w terminalu: curl -I https://twojsklep.pl/nowy-url. Pierwsza linia odpowiedzi to kod statusu, druga to nagłówek Location przy przekierowaniu. 200 — adres działa. 301 lub 302 — sprawdź, gdzie prowadzi Location. 404 — brak reguły. 500 — błąd serwera, nie routingu. Testuj na pojedynczych adresach, nie na stronie głównej: tam wszystko zwykle działa.

404 po zmianie wzorca URL to najczęstszy scenariusz. PrestaShop wygeneruje nowe adresy produktów i kategorii, ale nie stworzy przekierowań ze starych. Brak reguły w .htaccess oznacza, że każdy link z Google, maila i kampanii zwraca 404. Nie dopisuj setek reguł ręcznie — wyeksportuj stare i nowe adresy, dopasuj je po ID produktu i wstaw jako osobny blok przed regułami PrestaShop.

Pętla przekierowań prawie zawsze wynika z mieszania wersji domeny i protokołu: sklep ustawiony na http://twojsklep.pl, w .htaccess wymuszone HTTPS, a przed serwerem CDN w trybie elastycznego SSL. Serwer dostaje żądanie po HTTP, przekierowuje na HTTPS, proxy znów oddaje HTTP — przeglądarka zatrzymuje się po kilku iteracjach. Kolejność ma znaczenie: najpierw jedna reguła kanoniczna (HTTPS plus wybrana wersja www albo bez www), potem reguły PrestaShop. Domena w Parametry sklepu → Ruch i SEO (w 1.6: Preferencje → SEO i URL) musi być zgodna z tym, co wymusza .htaccess.

500 po regeneracji .htaccess: przywróć plik z kopii i wróć do działającego stanu, dopiero potem czytaj logi — error_log Apache lub log PHP z panelu hostingu. Najczęściej to błędna dyrektywa, brak RewriteBase albo nieobsługiwany moduł. Zanim włączysz przyjazne URL na produkcji, sprawdź mod_rewrite: blok <IfModule mod_rewrite.c> w .htaccess plus prosta reguła testowa przekierowująca /test-rewrite na stronę główną. Jeśli zwraca 404, hosting nie ma włączonego modułu i dalsza konfiguracja nie ma sensu. Więcej o kolejności prac przy wdrożeniu i konfiguracji PrestaShop opisaliśmy osobno.

ObjawNajczęstsza przyczynaPierwsze sprawdzenie
404 na starym adresiebrak reguły 301 w .htaccesscurl -I na stary i nowy URL
Przekierowanie w pętlikonflikt www/non-www, HTTP/HTTPS, proxy lub CDNkolejność reguł + domena w Ruch i SEO
500 po zapisie .htaccessbłędna dyrektywa lub brak RewriteBaseprzywrócenie kopii, potem error_log
Działa w panelu, publicznie 404wyłączony mod_rewrite na hostingublok IfModule + reguła testowa

Friendly URL a SEO techniczne i szybkość — co ma znaczenie

Powtarzany mit: przyjazne URL przyspieszają sklep. Nie. Zamiana ?controller=product&id_product=12 na /buty/nike-air-max-90.html to operacja na łańcuchu znaków — koszt rzędu ułamka milisekundy. Za szybkość odpowiadają cache szablonów i zapytań, CDN, wersja PHP i indeksy w bazie. Jeśli po włączeniu friendly URL sklep zwalnia, szukaj przyczyny w konfiguracji serwera, nie w routingu. Punkt odniesienia to Core Web Vitals — LCP, INP i CLS mierzą realne doświadczenie użytkownika, a nie kształt adresu. Warto przy okazji sprawdzić wymagania serwera i PHP dla PrestaShop, bo stara wersja PHP kosztuje więcej wydajności niż jakakolwiek zmiana w routingu.

Canonicalizacja filtrów, sortowania i paginacji to realne ryzyko, nie teoria. Moduł filtrów generuje adresy typu /buty?q=Kolor-Czerwony, sortowanie dokłada ?orderby=price, paginacja ?page=3. Każda kombinacja to osobny adres, który Google może zaindeksować jako duplikat kategorii. Ustaw tag canonical tak, by wskazywał na adres bazowy kategorii bez parametrów, i sprawdź w panelu modułu filtrów, czy nie tworzysz setek indeksowalnych wariantów. Ten sam produkt w trzech kategoriach to ten sam problem — wybierz jedną ścieżkę kanoniczną.

Kiedy potrzebny własny routing. Standardowy mechanizm PrestaShop (klasy Link i Dispatcher) wystarcza większości sklepów. Własny moduł z trasą i front controllerem wchodzi w grę, gdy przebudowujesz drzewo kategorii i chcesz zachować inne adresy niż wynikające z hierarchii, potrzebujesz adresów landingowych pod kampanie, prowadzisz kilka sklepów lub języków i musisz kontrolować prefiksy oraz hreflang, albo ERP wymusza adres z wewnętrznym kodem towaru.

Integracje to najczęstsze miejsce awarii. Link do produktu żyje w mailu transakcyjnym, w feedzie dla porównywarki, w szablonie oferty w ERP i w stopce newslettera. Po zmianie wzorca te miejsca nadal wysyłają stare adresy. Przed wdrożeniem wypisz wszystkie systemy generujące linki, a po zmianie wymuś pełną regenerację feedu i szablonów maili.

Checklista wdrożenia friendly URL w PrestaShop

Kolejność jest ważniejsza niż narzędzia. Każdy krok zakłada, że poprzedni został zamknięty i sprawdzony.

  1. Kopia zapasowa — pliki (w tym .htaccess), baza przez mysqldump, zrzut ustawień SEO. Odtwórz kopię na staging, zanim uznasz ją za backup.
  2. Test na staging — subdomena zablokowana przed indeksowaniem (hasło w .htpasswd lub noindex). Tam włączasz przyjazne URL, generujesz .htaccess i testujesz 20-30 najważniejszych adresów: produkt, kategorię, stronę CMS, wyszukiwarkę, koszyk.
  3. Mapa przekierowań 301 gotowa przed zmianą wzorca na produkcji, nie po niej.
  4. Wdrożenie na produkcji w oknie niskiego ruchu — np. 2:00-4:00, nigdy w dniu wysyłki newslettera.
  5. Sitemap i Search Console — regeneracja pliku, ponowne zgłoszenie, monitoring błędów 404 przez 30 dni.
  6. Logi 404 przez 2-4 tygodnie i dopisywanie brakujących przekierowań.

Kto odpowiada za 301. Osoba wdrażająca konfigurację, nie dział marketingu. Reguła praktyczna: przekierowanie zdejmuj dopiero wtedy, gdy przez trzy kolejne miesiące w logach jest zero trafień na stary adres. Linki z maili sprzed dwóch lat i z wpisów na forach żyją dłużej, niż się wydaje.

Moment na dewelopera. Wchodzi w grę przy zmianie wersji lub struktury sklepu — to opisaliśmy w materiale o migracji do PrestaShop krok po kroku — a także przy przebudowie drzewa kategorii, konfiguracji wielu sklepów i języków, niestandardowych trasach oraz integracji z ERP. W prostym sklepie z jedną domeną i stabilną strukturą wystarczy poprawny .htaccess i mapa przekierowań.

KrokKiedyEfekt do sprawdzenia
Kopia plików i bazyprzed każdą zmianąodtworzenie na staging bez błędów
Test na staging3-7 dni przed produkcją200 na nowych, 301 na starych adresach
Wdrożenie na produkcjiokno 2:00-4:00brak błędów 5xx w logach
Mapa 301przed zmianą wzorcacurl -I zwraca 301, potem 200
Sitemap i Search Consoledo 24 h po zmianiebrak wzrostu błędów 404 przez 30 dni
Sprzątanie przekierowańpo 6-12 mies. bez ruchuzero trafień w logach

Najczęstsze błędy i jak je wykryć

Włączenie friendly URL bez sprawdzenia mod_rewrite i praw zapisu do .htaccess — cały sklep zaczyna zwracać 404 lub błąd 500.

Jak wykryć: Po przełączeniu opcji otwórz w trybie incognito stronę główną, kategorię i produkt. Jeśli dostajesz 404, 500 albo pętlę przekierowań — to ten problem.

Jak naprawić: Wyłącz opcję, potwierdź z hostingiem, że mod_rewrite jest aktywny i plik .htaccess jest zapisywalny, dopiero potem włącz ponownie i wygeneruj .htaccess z panelu.

Zmiana wzorca trasy bez regeneracji .htaccess i czyszczenia cache — sklep pokazuje nowe linki, a serwer dalej zna stare reguły.

Jak wykryć: Zapisz wzorzec i sprawdź datę modyfikacji .htaccess oraz to, czy po kliknięciu w produkt adres zgadza się z nowym wzorcem.

Jak naprawić: Po każdej zmianie trasy: zapisz, wyczyść cache (Zaawansowane → Wydajność), wygeneruj .htaccess ponownie, a potem przetestuj trzy adresy.

Usunięcie {id} z trasy produktu bez kontroli nazw — dwa produkty o identycznym slugi „przechwytują” ten sam adres.

Jak wykryć: Wyeksportuj listę produktów do CSV, wygeneruj slugi z nazw i posortuj je rosnąco. Duplikaty zobaczysz od razu.

Jak naprawić: Przywróć {id} w trasie. Jeśli naprawdę potrzebujesz adresów bez ID, ustaw ręcznie unikalne slugi i dodaj regułę 301 ze starego adresu z ID.

Zostawienie domyślnych wzorców tras i traktowanie friendly URL jako czynnika rankingowego, który „sam poprawi SEO”.

Jak wykryć: Przejrzyj kilka adresów produktów i kategorii. Jeśli zawierają przypadkowe liczby, głębokie zagnieżdżenia albo brak kategorii — trasy nie były świadomie ustawione.

Jak naprawić: Ustal wzorzec produktu i kategorii pod swoją strukturę, zapisz go i sprawdź długość adresów. Samo SEO on-page robisz osobno — tytułami, treścią i danymi strukturalnymi.

Zmiana adresów URL bez mapowania stary → nowy i przekierowań 301 — ruch z backlinków i wyników wpada w 404.

Jak wykryć: W Google Search Console sprawdź raport „Nie znaleziono (404)” oraz spadek liczby kliknięć w 3–4 tygodnie po zmianie.

Jak naprawić: Zrób plik CSV ze starymi i nowymi adresami, wdróż przekierowania 301 przed publikacją zmian, a po nich zgłoś aktualną sitemap.

Zła kolejność tras — ogólna reguła stoi przed szczegółową i przechwytuje adresy, które powinny trafiać gdzie indziej.

Jak wykryć: Otwórz produkt, którego adres ma trafić do kategorii, i sprawdź, czy nie otwiera się przez inną trasę. Pomaga porównanie z listą tras w panelu.

Jak naprawić: Przenieś reguły szczegółowe nad ogólne, zapisz konfigurację, wygeneruj .htaccess i ponownie przetestuj trzy typy adresów.

Lista kontrolna do odklikania

Podsumowanie

Friendly URL to warstwa techniczna, która zamienia parametry na czytelne adresy i poprawia CTR oraz wygodę linkowania — nie jest czynnikiem rankingowym samym w sobie. Włączenie przełącznika to kilka minut, ale cała robota siedzi w wzorcach tras, kolejności reguł i testach. Najczęstsze wpadki to usuwanie {id} bez kontroli kolizji oraz zmiana adresów bez przekierowań 301. Zrób kopię .htaccess, przetestuj trzy adresy i miej plan rollbacku, zanim cokolwiek zmienisz. Jeśli prowadzisz sklep na PrestaShop, zajrzyj też do naszego działu PrestaShop.

Najczęściej zadawane pytania

Czy friendly URL w PrestaShop poprawia pozycje w Google?

Nie bezpośrednio. Google traktuje słowa w adresie jako sygnał pomocniczy — pomaga zrozumieć stronę, ale nie jest czynnikiem rankingowym sam w sobie. Realny efekt to wyższy CTR w wynikach i czytelniejsze linki w kampaniach. Pozycje budujesz treścią, strukturą i szybkością strony.

Jak włączyć friendly URL w PrestaShop?

Wejdź w Konfiguracja sklepu → Ruch i SEO, włącz opcję „Przyjazne URL” i zapisz. Wymaga to aktywnego mod_rewrite i zapisywalnego pliku .htaccess na Apache. Po zmianie wygeneruj .htaccess ponownie i wyczyść cache. Na koniec przetestuj stronę główną, kategorię i produkt w trybie incognito.

Czy mogę usunąć ID produktu z adresu URL?

Technicznie tak, ale to pułapka. Bez {id} każdy produkt musi mieć unikalny slug — inaczej dwa adresy się zderzą. Dodatkowo zmiana nazwy produktu zmienia URL, co przy braku przekierowania oznacza utratę backlinków. Zanim to zrobisz, wyeksportuj produkty do CSV i porównaj slugi — zajmuje to kilkanaście minut.

Dlaczego po włączeniu friendly URL widzę 404?

Najczęstsza przyczyna to brak mod_rewrite lub brak reguł w .htaccess. Druga to stary cache przeglądarki lub sklepu. Trzecia — brak zapisu do pliku .htaccess przez uprawnienia. Wyłącz opcję, sprawdź z hostingiem konfigurację serwera, ponownie wygeneruj .htaccess i przetestuj trzy adresy.

Czy friendly URL działa na Nginx?

Sam mechanizm tak, ale .htaccess jest specyficzny dla Apache i Nginx go nie czyta. Reguły przepisujesz do konfiguracji serwera (blok try_files i podobne), więc dostęp do plików konfiguracyjnych lub wsparcie hostingu jest niezbędne. Bez tego zostajesz na adresach dynamicznych. Więcej o wymaganiach serwera piszemy w PrestaShop system requirements.

Czy końcówka .html w adresie ma znaczenie dla SEO?

Sama końcówka nie daje przewagi w rankingu. Ma znaczenie praktyczne: użytkownicy rozpoznają adres jako stronę, a przenoszenie sklepu między platformami bywa prostsze, gdy adres kończy się tak samo. Ważniejsze od końcówki jest to, żeby adresy były krótkie, unikalne i spójne w całym sklepie.

Czy zmiana adresów URL zaszkodzi dotychczasowemu ruchowi?

Zaszkodzi tylko wtedy, gdy zabraknie przekierowań 301 i mapowania stary → nowy. Przygotuj plik CSV ze starymi i nowymi adresami, wdróż przekierowania przed zmianą, a po niej zgłoś nową sitemap i sprawdź raport 404 w Search Console. Przy poprawnym wdrożeniu ruch z backlinków przechodzi na nowe adresy.

Jeśli chcesz przejść przez konfigurację tras, wielojęzyczność i migrację adresów bez eksperymentów na produkcji, w DropDigital robimy to regularnie — od audytu po wdrożenie. Napisz, a powiemy wprost, co ma sens w Twoim sklepie.

Źródła i materiały