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.
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:
/buty/nike-air-max-90.html zamiast ?controller=product&id_product=12. Użytkownik wie, gdzie trafi, i częściej klika./buty, a nie listę parametrów — łatwiej porównać kategorie i kampanie.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.
| Aspekt | Adres surowy | Friendly URL |
|---|---|---|
| Czytelność | ?controller=product&id_product=12 | /buty/nike-air-max-90.html |
| Wklejanie w maila lub kampanię | wymaga komentarza | zrozumiały od razu |
| Wpływ na ranking | brak | sygnał pomocniczy, nie czynnik samodzielny |
| Wpływ na CTR w SERP | niższy | wyższy — adres opisuje treść |
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:
apache2ctl -M | grep rewrite — musi pojawić się rewrite_module.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.
| Krok | Gdzie | Co sprawdzić |
|---|---|---|
| Włącz mod_rewrite | serwer Apache | apache2ctl -M | grep rewrite |
| Kopia .htaccess | katalog główny sklepu | własne reguły nie zostaną nadpisane |
| Włącz przełącznik | Konfiguracja sklepu → Ruch i SEO | Przyjazne URL = Tak |
| Regeneruj .htaccess | ten sam ekran, przycisk Zapisz | plik ma nową datę modyfikacji |
| Wyczyść cache | Parametry zaawansowane → Wydajność | także cache CDN |
| Test | curl -I na 3 adresach | 200 OK bez pętli przekierowań |
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.
{id} — numeryczne ID zasobu (produktu, kategorii).{rewrite} — slug wygenerowany z nazwy, np. nike-air-max-90.{category} — slug bieżącej kategorii.{categories} — pełna ścieżka kategorii nadrzędnych, np. buty/sportowe.{-:ean13} — opcjonalny segment z kodem EAN; gdy pole jest puste, segment w ogóle nie pojawia się w adresie.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.
| Placeholder | Co wstawia | Przykład |
|---|---|---|
| {id} | numeryczne ID zasobu | 12 |
| {rewrite} | slug z nazwy | nike-air-max-90 |
| {category} | slug bieżącej kategorii | buty |
| {categories} | pełna ścieżka kategorii | buty/sportowe |
| {-:ean13} | opcjonalny EAN, pomijany gdy pusty | 1234567890128 |
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 trasy | Przykład | Kiedy się sprawdza | Główne ryzyko |
|---|---|---|---|
| {category:/}{id}-{rewrite}.html | /buty/12-nike-air-max-90.html | Katalog od kilkuset produktów w górę, importy, wielu redaktorów | Dłuższy adres i widoczne ID w wyniku wyszukiwania |
| {category:/}{rewrite}.html | /buty/nike-air-max-90.html | Mały katalog (do ok. 200 SKU) z jednym opiekunem nazw | Kolizja slugów oraz 404 przy każdej zmianie nazwy produktu |
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 adresowania | Przykład | Plus | Minus |
|---|---|---|---|
| Jedna domena i prefiks języka | sklep.pl/pl/, sklep.pl/en/ | Cały autorytet w jednym miejscu, jedna property w Search Console, jeden certyfikat SSL | Adresy dłuższe o 3–4 znaki |
| Subdomeny | pl.sklep.pl, en.sklep.pl | Łatwe rozdzielenie pracy i konfiguracji między zespołami | Osobne certyfikaty, osobne dane w Search Console, autorytet rozbity na dwa serwisy |
| Domeny per kraj | sklep.pl, shop.de | Naturalny sygnał lokalny z ccTLD | Każda zmiana treści do wykonania dwa razy |
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.
old_url.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..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.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.
| Etap | Co robisz | Czym weryfikujesz |
|---|---|---|
| Przed zmianą | Crawl starego sklepu i eksport adresów 200 do CSV | Screaming Frog, eksport z Search Console |
| Przed zmianą | Mapowanie old_url → new_url i wdrożenie reguł 301 | curl -I: kod 301 oraz nagłówek Location |
| Zmiana | Nowe wzorce tras w SEO i URL, korekta linków w menu i CMS | Podgląd 3 losowych produktów i 3 kategorii |
| Po zmianie | Nowa sitemap.xml i zgłoszenie jej w Search Console | Raport Sitemaps: status i liczba wykrytych adresów |
| Monitoring 2–4 tygodnie | Przegląd raportu Indeksowanie i logów serwera | Spadek liczby 404 tydzień do tygodnia |
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.
| Objaw | Najczęstsza przyczyna | Pierwsze sprawdzenie |
|---|---|---|
| 404 na starym adresie | brak reguły 301 w .htaccess | curl -I na stary i nowy URL |
| Przekierowanie w pętli | konflikt www/non-www, HTTP/HTTPS, proxy lub CDN | kolejność reguł + domena w Ruch i SEO |
| 500 po zapisie .htaccess | błędna dyrektywa lub brak RewriteBase | przywrócenie kopii, potem error_log |
| Działa w panelu, publicznie 404 | wyłączony mod_rewrite na hostingu | blok IfModule + reguła testowa |
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.
Kolejność jest ważniejsza niż narzędzia. Każdy krok zakłada, że poprzedni został zamknięty i sprawdzony.
.htaccess), baza przez mysqldump, zrzut ustawień SEO. Odtwórz kopię na staging, zanim uznasz ją za backup..htpasswd lub noindex). Tam włączasz przyjazne URL, generujesz .htaccess i testujesz 20-30 najważniejszych adresów: produkt, kategorię, stronę CMS, wyszukiwarkę, koszyk.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ń.
| Krok | Kiedy | Efekt do sprawdzenia |
|---|---|---|
| Kopia plików i bazy | przed każdą zmianą | odtworzenie na staging bez błędów |
| Test na staging | 3-7 dni przed produkcją | 200 na nowych, 301 na starych adresach |
| Wdrożenie na produkcji | okno 2:00-4:00 | brak błędów 5xx w logach |
| Mapa 301 | przed zmianą wzorca | curl -I zwraca 301, potem 200 |
| Sitemap i Search Console | do 24 h po zmianie | brak wzrostu błędów 404 przez 30 dni |
| Sprzątanie przekierowań | po 6-12 mies. bez ruchu | zero trafień w logach |
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.
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.
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.
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.
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.
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.
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.
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.
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.