Blog w Shoperze: adresy typu /pl/n/12 i jak zamienić je na czytelne

Publikujesz na Shoperze artykuł „Jak wybrać blat warsztatowy" i dostajesz adres /pl/n/12. Numer. Bez jednego słowa z tytułu. Shoper potrafi to zmienić na czytelny adres i zrobić przy tym poprawne przekierowanie 301 — tylko że pole, które za to odpowiada, nie rzuca się w oczy, a decyzja o strukturze adresów niesie konsekwencje, o których warto wiedzieć przed publikacją trzydziestego tekstu, nie po.

Co dostajesz domyślnie

Moduł aktualności w Shoperze nadaje każdemu wpisowi adres według schematu:

https://twojsklep.pl/pl/n/12

Gdzie 12 to identyfikator wpisu w bazie. Adres jest krótki i stabilny, ale nie niesie żadnej informacji — ani dla wyszukiwarki, ani dla człowieka, który zobaczy go w wynikach wyszukiwania albo dostanie w wiadomości.

Nie jest to katastrofa. Adres URL to jeden z wielu sygnałów i sam w sobie nie decyduje o pozycji. Ale to sygnał darmowy — kosztuje jedno pole w formularzu — a przy okazji poprawia klikalność w wynikach, bo Google wyświetla ścieżkę adresu nad tytułem.

Pole, które to zmienia

W formularzu edycji aktualności, w sekcji ustawień SEO, jest pole seo_url. Po wpisaniu tam slugu Shoper robi dwie rzeczy naraz:

  1. Publikuje artykuł pod nowym, czytelnym adresem.
  2. Ustawia przekierowanie 301 ze starego /pl/n/{id} na nowy adres i wpisuje na nowej stronie prawidłowy canonical.

To ważne, bo oznacza, że zmiana adresu nie kosztuje utraty tego, co artykuł już wypracował. Przekierowanie 301 przenosi moc na nowy adres, a stary link — na przykład wklejony kiedyś na forum — dalej działa.

W jednym ze sklepów, które prowadzę, wygląda to tak (adres podmieniony na przykładowy):

GET /pl/n/10301/jak-wybrac-ekspres-do-kawy-do-biura

a na stronie docelowej: <link rel="canonical" href="…/jak-wybrac-ekspres-do-kawy-do-biura">

Czyli dokładnie tak, jak powinno: jeden skok, bez łańcucha przekierowań, canonical spójny z adresem końcowym.

Pułapka: slug ląduje w katalogu głównym

I tu jest rzecz, o której trzeba wiedzieć przed podjęciem decyzji. Nowy adres nie trafia do podkatalogu /blog/ ani /aktualnosci/. Ląduje bezpośrednio w katalogu głównym domeny:

❌ nie twojsklep.pl/blog/jak-wybrac-ekspres

✅ tylko twojsklep.pl/jak-wybrac-ekspres

Ma to dwie konsekwencje. Pierwsza jest neutralna albo lekko korzystna: adresy są krótsze, a artykuł siedzi „bliżej" strony głównej w strukturze. Druga jest problematyczna: tracisz możliwość filtrowania bloga jako grupy. W Search Console nie zrobisz raportu dla samego bloga przez filtr ścieżki, bo ścieżki nie ma. Trzeba prowadzić listę adresów artykułów osobno, żeby w ogóle wiedzieć, ile ruchu robi treść, a ile katalog.

Jeśli dopiero zaczynasz i zależy Ci na czystym raportowaniu, rozważ konsekwentne prefiksowanie slugów — na przykład wszystkie artykuły zaczynające się od nazwy tematu. Nie zastąpi to katalogu, ale da się po tym filtrować.

Kolizje slugów przy większej liczbie tekstów

Skoro artykuły dzielą przestrzeń adresów z resztą sklepu, slug musi być unikalny w skali całej domeny. Przy pięciu tekstach to nieistotne. Przy trzydziestu, pisanych wokół jednego tematu, kolizje pojawiają się naturalnie — kilka artykułów o tym samym produkcie chce mieć slug zaczynający się tak samo.

Przy migracji trzydziestu siedmiu artykułów w jednym ze sklepów musiałem dopisywać do kolidujących slugów sufiks z identyfikatorem wpisu. Działa, ale wygląda gorzej niż slug pisany ręcznie. Lepiej zaplanować nazewnictwo z góry, niż naprawiać je przy trzydziestym tekście.

Jak zmienić adresy masowo, nie po jednym

Klikanie przez panel przy trzydziestu wpisach to kilka godzin i pewność, że gdzieś się pomylisz. Shoper udostępnia API, przez które da się to zrobić hurtowo — łącznie z modułem przekierowań:

GET/POST /webapi/rest/redirects

pola: type ("0" = 301), route (adres źródłowy), target (adres docelowy) — ścieżki bez domeny.

Dwie rzeczy, o których warto pamiętać przy pracy przez API. Po pierwsze, zrób kopię przed zmianą — pobierz wszystkie wpisy do pliku JSON, razem z aktualnymi adresami i meta. Odtworzenie stanu sprzed pomyłki bez takiej kopii jest bolesne.

Po drugie, panel Shopera potrafi zapisać połowicznie i nie powiedzieć o tym. Przy formularzach stron informacyjnych spotkałem sytuację, w której żądanie bez wypełnionego pola name zwraca HTTP 200, ale treści nie zapisuje. Kod odpowiedzi mówi „w porządku", a w bazie nie zmienia się nic. Weryfikuj zapis odczytem wartości kontrolnej, nie kodem odpowiedzi — to reguła, która oszczędza kilka godzin szukania nieistniejącego błędu.

Co zrobić z tekstami, które się kanibalizują

Przy okazji porządkowania adresów warto zrobić rzecz, którą i tak trzeba zrobić prędzej czy później: sprawdzić, czy artykuły nie walczą ze sobą o te same frazy.

W sklepie, o którym piszę, sześć tekstów dotyczyło tego samego tematu. Z Search Console wyszło, że ruch robi jeden z nich — pozycje 3–7, kilkadziesiąt kliknięć. Cztery pozostałe miały zero kliknięć i zero wyświetleń wartych wzmianki. Nie były złe. Były po prostu słabszymi wersjami tego samego.

Rozwiązanie było mało romantyczne: cztery martwe teksty dostały przekierowanie 301 na ten, który działa, i status nieaktywny. Zamiast czterech słabych sygnałów jeden mocniejszy.

Uwaga na jedną rzecz: przekieruj oba adresy — i slug, i stary /pl/n/{id}. Jeśli przekierujesz tylko slug, wersja numeryczna nadal odpowiada kodem 200 i zostaje w indeksie jako duplikat. Po zmianie sprawdź każdy adres pojedynczo i upewnij się, że każdy robi jeden skok, a nie łańcuch.

Ile z tych artykułów w ogóle pracuje

Na koniec liczba, która jest niewygodna, ale uczciwa. W tym samym sklepie blog odpowiadał za około 10% kliknięć całej witryny w okresie trzech miesięcy. Brzmi przyzwoicie — dopóki nie rozbije się tego na artykuły.

81% kliknięć bloga pochodziło z jednego artykułu. Pozostałe trzydzieści sześć tekstów wypracowało razem mniej niż jedną dziesiątą tego, co on sam.

Wniosek nie brzmi „blog nie działa". Blog w tym sklepie działa i witryna urosła w tym czasie ponad czterokrotnie. Wniosek brzmi: rozkład wyników jest skrajnie nierówny i z góry nie wiadomo, który tekst będzie tym jednym. Dlatego ma sens pisać dalej, ale ma też sens regularnie sprawdzać, co z napisanego realnie pracuje — i konsolidować resztę zamiast dopisywać kolejne warianty tego samego.

Zmiana adresów z /pl/n/12 na czytelne slugi to praca na godzinę albo dwie. Sprawdzenie, które teksty żyją, to praca na jedno popołudnie. Obie są tańsze niż napisanie kolejnych dziesięciu artykułów, z których zadziała jeden.

Najczęstsze pytania

Czy zmiana adresu artykułu spowoduje spadek pozycji?

Shoper ustawia przy tej zmianie przekierowanie 301, więc moc przechodzi na nowy adres. Krótki okres osiadania jest normalny — Google musi przetworzyć przekierowanie i zaktualizować indeks, co przy sitemapie i regularnym crawlu zajmuje zwykle od kilku dni do dwóch tygodni. Jeśli artykuł ma dobre pozycje na ważną frazę, warto tę pozycję monitorować przez pierwszy miesiąc.

Czy da się przenieść artykuły do katalogu /blog/?

W module aktualności slug trafia do katalogu głównego i nie znalazłem ustawienia, które by to zmieniało. Jeśli struktura katalogów jest dla Ciebie krytyczna — na przykład ze względu na raportowanie — alternatywą jest prowadzenie bloga poza sklepem, na osobnej instalacji pod subdomeną albo katalogiem obsługiwanym przez hosting. To jednak decyzja o większym ciężarze niż sam wygląd adresu.

Ile artykułów ma sens napisać na start?

Nie ma progu, po którego przekroczeniu „zaczyna działać”. Z mojego doświadczenia wynikowy rozkład jest skrajnie nierówny — pojedyncze teksty ciągną całą resztę. Praktyczniej myśleć nie liczbą, tylko klastrami: kilka tekstów wokół jednego, konkretnego tematu zakupowego, mocno ze sobą polinkowanych, daje więcej niż dwadzieścia luźnych artykułów o wszystkim.

Po czym poznać, że artykuły się kanibalizują?

Najprostszy test w Search Console: wybierz frazę i sprawdź, które adresy się na nią wyświetlają. Jeśli na jedno zapytanie odpowiada kilka Twoich artykułów i żaden nie ma dobrej pozycji, to sygnał, że dzielą między siebie sygnały zamiast je kumulować. Drugi sygnał to artykuł z wyświetleniami i zerem kliknięć przez kilka miesięcy — zwykle stoi tuż za mocniejszą własną stroną.

Czy usuwać słabe artykuły, czy przekierowywać?

Przekierowywać, jeśli dotyczą tego samego tematu co tekst, który działa — wtedy 301 przenosi to, co zdążyły zebrać. Usuwać do kodu 410 tylko wtedy, gdy treść jest nieaktualna i nie ma sensownego celu przekierowania. Czego nie robić: zostawiać ich aktywnych „bo szkoda”. Nieczytany duplikat nie jest neutralny — konkuruje z Twoją własną, lepszą stroną.

Sprawdzę, które teksty w Twoim sklepie realnie pracują

W bezpłatnym audycie pokażę rozkład ruchu na artykuły i wskażę te, które kanibalizują się nawzajem.

Zamów bezpłatny audyt SEO sklepu Shoper →