{"id":1085,"date":"2023-05-31T14:13:57","date_gmt":"2023-05-31T11:13:57","guid":{"rendered":"https:\/\/presta.site\/blog\/rozwiazywanie-problemow-z-przepisywaniem-adresow-url-seo-w-prestashop\/"},"modified":"2026-07-25T13:39:00","modified_gmt":"2026-07-25T10:39:00","slug":"rozwiazywanie-problemow-z-przepisywaniem-adresow-url-seo-w-prestashop","status":"publish","type":"post","link":"https:\/\/presta.site\/blog\/pl\/rozwiazywanie-problemow-z-przepisywaniem-adresow-url-seo-w-prestashop\/","title":{"rendered":"Przepisywanie URL PrestaShop: checklista 5 krok\u00f3w na napraw\u0119 zepsutych Friendly URL"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Friendly URL jest w\u0142\u0105czone, lecz linki produkt\u00f3w nadal wygl\u0105daj\u0105 jak <code class=\"codecolorer text default\"><span class=\"text\">index.php?id_product=12<\/span><\/code> &#8211; albo ka\u017cda przyjazna \u015bcie\u017cka zwraca 404. <strong>Przepisywanie URL PrestaShop<\/strong> dzia\u0142a dopiero wtedy, gdy prze\u0142\u0105cznik w Back Office, plik rewrite w katalogu g\u0142\u00f3wnym (Apache) i regu\u0142y serwera WWW s\u0105 ze sob\u0105 zgodne. To checklista w 5 krok\u00f3w: okre\u015bl symptom, potwierd\u017a ustawienie sklepu, napraw warstw\u0119 serwera, zweryfikuj jeden URL, na ko\u0144cu uporz\u0105dkuj duplikaty i stare 404.<\/p>\n\n\n<!--more-->\n\n\n<p class=\"wp-block-paragraph\">Og\u00f3lna rada \u201ew\u0142\u0105cz Friendly URL\u201d \u0142atwo znale\u017a\u0107 w chatbocie. Zwykle najwi\u0119cej czasu marnuje si\u0119 na niew\u0142a\u015bciw\u0105 napraw\u0119 dla danego symptomu &#8211; albo na pomini\u0119cie testu OK\/b\u0142\u0105d po ka\u017cdym kroku. Przechod\u017a list\u0119 w podanej kolejno\u015bci. Oficjalne nazwy w dokumentacji PrestaShop 9: <a href=\"https:\/\/docs.prestashop-project.org\/v.9-documentation\/user-guide\/configuring-shop\/shop-parameters\/traffic\" target=\"_blank\" rel=\"noopener noreferrer\">Shop Parameters \u2192 Traffic<\/a>. Przed edycj\u0105 konfiguracji serwera warto wykona\u0107 <a href=\"https:\/\/presta.site\/blog\/pl\/jak-utworzyc-kopie-zapasowa-w-prestashop\/\">pe\u0142n\u0105 kopi\u0119 zapasow\u0105 PrestaShop<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Krok 1 &#8211; Okre\u015bl, co jest zepsute<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Otw\u00f3rz stron\u0119 produktu w prywatnym oknie i zapisz, kt\u00f3ry przypadek wyst\u0119puje. Nie pomijaj tego kroku &#8211; trzy scenariusze wymagaj\u0105 r\u00f3\u017cnych napraw.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>A &#8211; Nadal brzydkie URL.<\/strong> W pasku adresu nadal wida\u0107 <code class=\"codecolorer text default\"><span class=\"text\">id_product<\/span><\/code>, <code class=\"codecolorer text default\"><span class=\"text\">id_category<\/span><\/code> lub <code class=\"codecolorer text default\"><span class=\"text\">controller=<\/span><\/code> po w\u0142\u0105czeniu Friendly URL. PrestaShop nie generuje przepisanych link\u00f3w (albo cache serwuje star\u0105 stron\u0119).<\/li>\n<li><strong>B &#8211; Przyjazne URL zwracaj\u0105 404.<\/strong> Linki wygl\u0105daj\u0105 poprawnie (<code class=\"codecolorer text default\"><span class=\"text\">\/category\/product-slug<\/span><\/code>), ale ka\u017cda przyjazna \u015bcie\u017cka zwraca stron\u0119 nie znaleziono. Sklep generuje slugi; serwer WWW nie kieruje ich do PrestaShop.<\/li>\n<li><strong>C &#8211; Dzia\u0142a tylko na jednej domenie.<\/strong> G\u0142\u00f3wny sklep jest w porz\u0105dku; domena multistore, subdomena lub sklep w podkatalogu nie dzia\u0142a. To cz\u0119sto kwestia URL sklepu \/ DNS \/ document root &#8211; a nie drugiego b\u0142\u0119du Friendly URL. R\u00f3wnolegle z t\u0105 checklist\u0105 warto zajrze\u0107 do <a href=\"https:\/\/presta.site\/blog\/pl\/czym-jest-multisklep-i-jak-z-nim-pracowac-w-prestashop\/\">przewodnika o multisklepie w PrestaShop<\/a>.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>OK:<\/strong> przed dotkni\u0119ciem Apache lub Nginx mo\u017cna wskaza\u0107 A, B lub C.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Krok 2 &#8211; Potwierd\u017a Friendly URL w Back Office<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"412\" src=\"https:\/\/presta.site\/blog\/wp-content\/uploads\/2023\/05\/Screenshot_1-5-1024x412.png\" alt=\"Przepisywanie URL PrestaShop - prze\u0142\u0105cznik Friendly URL w Shop Parameters \u2192 Traffic &#038; SEO\" class=\"wp-image-716\" srcset=\"https:\/\/presta.site\/blog\/wp-content\/uploads\/2023\/05\/Screenshot_1-5-1024x412.png 1024w, https:\/\/presta.site\/blog\/wp-content\/uploads\/2023\/05\/Screenshot_1-5-300x121.png 300w, https:\/\/presta.site\/blog\/wp-content\/uploads\/2023\/05\/Screenshot_1-5-768x309.png 768w, https:\/\/presta.site\/blog\/wp-content\/uploads\/2023\/05\/Screenshot_1-5.png 1381w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Przejd\u017a do <strong>Shop Parameters \u2192 Traffic &#038; SEO<\/strong>.<\/li>\n<li>Otw\u00f3rz <strong>Set up URLs<\/strong>.<\/li>\n<li>Ustaw <strong>Friendly URL<\/strong> na Yes i zapisz.<\/li>\n<li>Wyczy\u015b\u0107 cache PrestaShop (<strong>Advanced Parameters \u2192 Performance<\/strong>) i przetestuj ponownie ten sam produkt w prywatnym oknie.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Na Apache zapis tej strony powinien utworzy\u0107 lub od\u015bwie\u017cy\u0107 plik <code class=\"codecolorer text default\"><span class=\"text\">.htaccess<\/span><\/code> w katalogu g\u0142\u00f3wnym z regu\u0142ami rewrite PrestaShop. Je\u015bli plik brakuje, jest pusty lub starszy ni\u017c zapis, PHP nie mo\u017ce zapisywa\u0107 w katalogu g\u0142\u00f3wnym sklepu &#8211; napraw uprawnienia przed szukaniem winy w modu\u0142ach.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Na Nginx sam prze\u0142\u0105cznik nie instaluje regu\u0142 rewrite. Nadal potrzebny jest krok 3.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>OK (przypadek A):<\/strong> po wyczyszczeniu cache nowe linki w HTML u\u017cywaj\u0105 slug\u00f3w (nawet je\u015bli nadal zwracaj\u0105 404 &#8211; wtedy przechodzi to w przypadek B). <strong>OK (przypadek B\/C):<\/strong> Friendly URL jest Yes i pozostaje Yes po prze\u0142adowaniu.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Krok 3 &#8211; Napraw warstw\u0119 serwera (Apache lub Nginx)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Aby kontynuowa\u0107 <strong>przepisywanie URL PrestaShop<\/strong>, sprawd\u017a <strong>Advanced Parameters \u2192 Information \u2192 Server information<\/strong> (albo zapytaj hosta). Wykonaj tylko \u015bcie\u017ck\u0119 odpowiadaj\u0105c\u0105 serwerowi.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Przy serwerze Apache<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>W\u0142\u0105cz <code class=\"codecolorer text default\"><span class=\"text\">mod_rewrite<\/span><\/code> (cz\u0119sto domy\u015blnie w\u0142\u0105czone).<\/li>\n<li>Potwierd\u017a, \u017ce document root sklepu ma czytelny <code class=\"codecolorer text default\"><span class=\"text\">.htaccess<\/span><\/code>, kt\u00f3ry PrestaShop zaktualizowa\u0142 przy ostatnim zapisie SEO.<\/li>\n<li>AllowOverrides musi zezwala\u0107 na dyrektywy rewrite dla tego katalogu.<\/li>\n<li>Instalacje w podkatalogu wymagaj\u0105 dopasowanego <code class=\"codecolorer text default\"><span class=\"text\">RewriteBase<\/span><\/code>.<\/li>\n<li>Niestandardowe regu\u0142y nad blokiem PrestaShop mog\u0105 przerwa\u0107 przepisywanie &#8211; tymczasowo przenie\u015b dodatki pod sekcj\u0119 PrestaShop na czas testu.<\/li>\n<li>Po r\u0119cznej edycji prze\u0142\u0105cz Friendly URL off\/on raz i zapisz, aby PrestaShop odtworzy\u0142 w\u0142asn\u0105 sekcj\u0119, potem dodaj z powrotem tylko potrzebne niestandardowe linie.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>OK:<\/strong> przyjazny URL produktu zwraca HTTP 200 z poprawnym produktem (nie domy\u015bln\u0105 stron\u0119 404 hosta).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Przy serwerze Nginx<\/h3>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"947\" height=\"220\" src=\"https:\/\/presta.site\/blog\/wp-content\/uploads\/2023\/05\/Screenshot_2-4.png\" alt=\"Blok serwera Nginx z miejscem na regu\u0142y przepisywania URL PrestaShop\" class=\"wp-image-719\" srcset=\"https:\/\/presta.site\/blog\/wp-content\/uploads\/2023\/05\/Screenshot_2-4.png 947w, https:\/\/presta.site\/blog\/wp-content\/uploads\/2023\/05\/Screenshot_2-4-300x70.png 300w, https:\/\/presta.site\/blog\/wp-content\/uploads\/2023\/05\/Screenshot_2-4-768x178.png 768w, https:\/\/presta.site\/blog\/wp-content\/uploads\/2023\/05\/Screenshot_2-4-941x220.png 941w\" sizes=\"auto, (max-width: 947px) 100vw, 947px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Nginx ignoruje <code class=\"codecolorer text default\"><span class=\"text\">.htaccess<\/span><\/code>. Edytuj blok serwera witryny (cz\u0119sto w <code class=\"codecolorer text default\"><span class=\"text\">\/etc\/nginx\/sites-available\/<\/span><\/code>):<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Dodaj aktualny przyk\u0142ad regu\u0142 rewrite Nginx dla PrestaShop z <a href=\"https:\/\/devdocs.prestashop-project.org\/9\/basics\/installation\/nginx\/\" target=\"_blank\" rel=\"noopener noreferrer\">dokumentacji Nginx PrestaShop 9<\/a> (zachowaj rzeczywisty root i socket PHP-FPM).<\/li>\n<li>Uruchom <code class=\"codecolorer text default\"><span class=\"text\">nginx -t<\/span><\/code>.<\/li>\n<li>Je\u015bli test przejdzie, prze\u0142aduj: <code class=\"codecolorer text default\"><span class=\"text\">systemctl reload nginx<\/span><\/code> (lub odpowiednik w panelu hosta).<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Je\u015bli chatbot wklei\u0142 stary przyk\u0142ad, zast\u0105p go oficjalnym blokiem dla danej g\u0142\u00f3wnej wersji. \u015acie\u017cki i linie <code class=\"codecolorer text default\"><span class=\"text\">try_files<\/span><\/code> si\u0119 zmieniaj\u0105; fragmenty z for\u00f3w sprzed lat to cz\u0119sta przyczyna przypadku B.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>OK:<\/strong> jak przy Apache &#8211; przyjazny URL \u2192 200 \u2192 poprawny produkt. Je\u015bli CDN lub reverse proxy stoi z przodu podczas awarii, wyczy\u015b\u0107 jego cache raz, aby nie serwowa\u0142 zapisanych 404.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Krok 4 &#8211; Zweryfikuj przepisywanie URL PrestaShop od pocz\u0105tku do ko\u0144ca<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nie ko\u0144cz na \u201elinki w menu wygl\u0105daj\u0105 \u0142adnie\u201d. Uruchom ten kr\u00f3tki test na jednym produkcie:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Prywatne okno: otw\u00f3rz produkt z listy kategorii.<\/li>\n<li>Pasek adresu pokazuje \u015bcie\u017ck\u0119 ze slugiem, nie tylko <code class=\"codecolorer text default\"><span class=\"text\">id_product<\/span><\/code>.<\/li>\n<li>Skopiuj ten przyjazny URL i otw\u00f3rz w nowej karcie: HTTP 200, ten sam produkt.<\/li>\n<li>Opcjonalnie: wywo\u0142aj znany b\u0142\u0119dny slug &#8211; powinna pojawi\u0107 si\u0119 szablonowa strona 404 sklepu, a nie pusta strona serwera, kt\u00f3ra nigdy nie dotar\u0142a do PrestaShop.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Je\u015bli krok 4 pada tylko na drugiej domenie, gdy g\u0142\u00f3wna przechodzi, wr\u00f3\u0107 do przypadku C (URL multistore \/ DNS \/ document root) zanim ponownie edytujesz regu\u0142y rewrite.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>OK:<\/strong> jeden produkt przetrwa klik z listy + bezpo\u015brednie prze\u0142adowanie przyjaznego URL.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Krok 5 &#8211; Canonicals i pozosta\u0142e 404<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Gdy przepisywanie URL PrestaShop dzia\u0142a, doko\u0144cz stron\u0119 SEO, aby wyszukiwarki nie dzieli\u0142y autorytetu mi\u0119dzy duplikaty i martwe \u015bcie\u017cki.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>W <strong>Shop Parameters \u2192 Traffic &#038; SEO<\/strong> ustaw <strong>Redirect to the canonical URL<\/strong> na <strong>301 Moved Permanently<\/strong> w dzia\u0142aj\u0105cym sklepie.<\/li>\n<li>Sprawd\u017a modu\u0142y zewn\u0119trzne dodaj\u0105ce URL listingu lub blogu &#8211; te\u017c potrzebuj\u0105 dopasowanych canonicals.<\/li>\n<li>Po zmianie slug\u00f3w, przeniesieniu kategorii lub zmianie domeny dodaj 301 ze starych \u015bcie\u017cek (albo przywr\u00f3\u0107 encj\u0119). Zmiana schematu URL bez przekierowa\u0144 traci pozycje ju\u017c zdobyte.<\/li>\n<li>Wy\u015blij zaktualizowan\u0105 map\u0119 witryny, aby roboty wykry\u0142y preferowane URL &#8211; zobacz <a href=\"https:\/\/presta.site\/blog\/pl\/czym-jest-mapa-witryny-sitemap-i-jak-z-nia-pracowac-w-prestashop\/\">przewodnik o mapie witryny w PrestaShop<\/a>.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">U\u017cyj raportu pokrycia Search Console (albo log\u00f3w dost\u0119pu), aby wypisa\u0107 rzeczywiste \u015bcie\u017cki 404 nadal trafiaj\u0105ce na serwer. Napraw je przekierowaniami lub przywr\u00f3ceniem tre\u015bci &#8211; samo przepisywanie nie o\u017cywi usuni\u0119tych stron CMS.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>OK:<\/strong> opcja canonical to 301; przyk\u0142adowa alternatywna \u015bcie\u017cka produktu przekierowuje; znane stare slugi, kt\u00f3re maj\u0105 znaczenie, s\u0105 przekierowane lub \u015bwiadomie usuni\u0119te.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Kr\u00f3tkie podsumowanie 5 krok\u00f3w<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Okre\u015bl symptom (A brzydkie \/ B przyjazne 404 \/ C jedna domena).<\/li>\n<li>Potwierd\u017a Friendly URL Yes + wyczy\u015b\u0107 cache (+ zapisywalny <code class=\"codecolorer text default\"><span class=\"text\">.htaccess<\/span><\/code> na Apache).<\/li>\n<li>Napraw Apache <code class=\"codecolorer text default\"><span class=\"text\">mod_rewrite<\/span><\/code>\/<code class=\"codecolorer text default\"><span class=\"text\">.htaccess<\/span><\/code> lub regu\u0142y bloku serwera Nginx.<\/li>\n<li>Potwierd\u017a jeden produkt: przyjazny link + bezpo\u015brednie prze\u0142adowanie = 200.<\/li>\n<li>Ustaw canonical 301 i uporz\u0105dkuj pozosta\u0142e 404 \/ map\u0119 witryny.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Je\u015bli ma zosta\u0107 jeden nawyk: po ka\u017cdej zmianie przetestuj ponownie ten sam URL produktu, zanim otworzysz nast\u0119pne ustawienie. Tak przepisywanie URL PrestaShop przestaje by\u0107 p\u0119tl\u0105 zgadywania.<\/p>\n\n","protected":false},"excerpt":{"rendered":"<p>Zepsute Friendly URL? Checklista przepisywania URL PrestaShop w 5 krok\u00f3w &#8211; symptom, prze\u0142\u0105cznik w Back Office, Apache lub Nginx, weryfikacja, na ko\u0144cu canonicals i pozosta\u0142e 404.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[149],"tags":[],"class_list":["post-1085","post","type-post","status-publish","format-standard","hentry","category-rozwoj"],"_links":{"self":[{"href":"https:\/\/presta.site\/blog\/wp-json\/wp\/v2\/posts\/1085","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/presta.site\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/presta.site\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/presta.site\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/presta.site\/blog\/wp-json\/wp\/v2\/comments?post=1085"}],"version-history":[{"count":1,"href":"https:\/\/presta.site\/blog\/wp-json\/wp\/v2\/posts\/1085\/revisions"}],"predecessor-version":[{"id":1990,"href":"https:\/\/presta.site\/blog\/wp-json\/wp\/v2\/posts\/1085\/revisions\/1990"}],"wp:attachment":[{"href":"https:\/\/presta.site\/blog\/wp-json\/wp\/v2\/media?parent=1085"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/presta.site\/blog\/wp-json\/wp\/v2\/categories?post=1085"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/presta.site\/blog\/wp-json\/wp\/v2\/tags?post=1085"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}