Modelowane listy odbiorców nie zawierają konkretnych osób, tylko prawdopodobieństwa. Wyjaśniam, jak powstają, gdzie ich szukać w panelu i jak czytać ich raporty.
Struktura adresów to temat, w którym łatwo wpaść w jedną z dwóch skrajności. Pierwsza: uznać, że adresy nie mają znaczenia, bo Google i tak sobie poradzi. Druga: przepisać całą witrynę pod „adresy przyjazne SEO” i przy okazji stracić pozycje, bo ktoś zapomniał o przekierowaniach.
Prawda jest mniej ekscytująca. Sam adres jest bardzo słabym czynnikiem rankingowym i nie da się nim niczego wygrać. Natomiast bałagan w adresach potrafi realnie zaszkodzić w dwóch miejscach: robot marnuje zasoby na indeksowanie tysięcy wariantów tej samej strony, a człowiek nie potrafi się w witrynie zorientować ani jej sensownie zalinkować.
Poniżej opisuję zasady, które faktycznie mają znaczenie, i osobno — co zrobić, gdy adresy trzeba zmienić. Ta druga część jest ważniejsza, bo źle przeprowadzona zmiana adresów kosztuje więcej niż cały wcześniejszy bałagan.
Trzy powody, po kolei od najbardziej praktycznego.
Pierwszy jest ludzki. Adres pojawia się przy udostępnianiu linku, w komunikatorze, w mailu, w prezentacji. Adres złożony z identyfikatorów i parametrów nic nie mówi, więc nikt go nie klika w ciemno i nikt go nie zapamiętuje. Czytelny adres jest częścią komunikacji, nawet jeśli w wynikach wyszukiwania Google zwykle wyświetla dziś ścieżkę okruszków, a nie surowy adres.
Drugi jest techniczny. Każdy unikalny adres to dla robota osobna strona do sprawdzenia. Jeśli ta sama karta produktu jest dostępna pod pięcioma wariantami — z parametrem sortowania, z identyfikatorem sesji, z parametrem kampanii, z wielką i małą literą — robot odwiedzi je wszystkie, zanim zorientuje się, że to jedno i to samo. W dużym sklepie to jest różnica między szybkim a wolnym indeksowaniem nowych produktów.
Trzeci jest organizacyjny. Struktura adresów odbija strukturę informacji. Jeśli nie da się jej zaprojektować, to zwykle znaczy, że nikt nie zdecydował, co jest kategorią, a co filtrem — i ten problem wróci przy nawigacji, przy linkowaniu wewnętrznym i przy planowaniu treści.
Krótka lista. Wszystko poza nią to detale, o które nie warto się bić.
Czego na tej liście nie ma: obsesji na punkcie liczby poziomów zagnieżdżenia. Głębokość ścieżki sama w sobie nie jest problemem — problemem jest strona, do której z żadnego miejsca nie prowadzi link.
Pytanie o „ł” i „ą” w adresach wraca regularnie, więc krótko: technicznie to działa, przeglądarki i wyszukiwarki radzą sobie ze znakami zakodowanymi procentowo.
Praktycznie unikam tego z dwóch powodów. Po pierwsze, taki adres skopiowany i wklejony w innym systemie zamienia się w ciąg znaków ucieczki, którego nikt nie przeczyta — a w mailu czy poście wygląda jak błąd. Po drugie, część narzędzi, serwerów i wtyczek nadal potrafi się na tym potknąć, więc kupujesz sobie ryzyko bez żadnej korzyści.
Standardowe rozwiązanie to transliteracja bez ogonków przy generowaniu adresu i zostawienie polskich znaków tam, gdzie ich miejsce: w tytule, nagłówku i treści. To one są czytane przy ocenie treści, nie ścieżka adresu.
To najczęstsze źródło rozjazdu w sklepach i serwisach z filtrowaniem.
Warto wiedzieć o zmianie, którą Google wprowadziło tej wiosny: narzędzie do obsługi parametrów URL w Search Console przestało działać. Zostało wycofane w kwietniu, a Google uzasadnił to tym, że znikoma część konfiguracji była w praktyce użyteczna, bo robot sam radzi sobie z rozpoznawaniem nieistotnych parametrów. Konsekwencja jest prosta: nie ma już przełącznika w panelu, którym można było posprzątać po bałaganie w adresach. Zostają narzędzia po naszej stronie.
Co robię zamiast tego, w tej kolejności:
Osobna decyzja dotyczy filtrów, które mają być stronami docelowymi — na przykład kategorii łączonej z marką. Tam warto mieć czysty, statyczny adres i normalną stronę, a nie parametr. Ale wybieram wtedy kilka kombinacji o realnym popycie, nie wszystkie możliwe.
Dwa pytania wracają najczęściej.
Czy kategoria ma być w adresie produktu? Wersja z kategorią jest czytelniejsza dla człowieka, ale rodzi problem, gdy produkt należy do kilku kategorii albo zmienia przypisanie — wtedy trzeba pilnować, żeby nie powstały dwa adresy tej samej karty, i przekierowywać po każdej zmianie w katalogu. Wersja płaska, gdzie produkt siedzi bezpośrednio pod jednym segmentem, jest odporniejsza w utrzymaniu i w sklepach z ruchliwym asortymentem wybieram ją częściej.
Katalog czy subdomena dla bloga i pomocy? Katalog na tej samej domenie jest prostszy w utrzymaniu i nie wymaga osobnego zarządzania, więc jeśli nie ma twardego powodu technicznego, wybieram katalog.
I rzecz najważniejsza w całej sekcji: struktura adresów ma odpowiadać temu, jak ludzie szukają, a nie temu, jak wygląda schemat bazy danych. Jeśli firma dzieli ofertę inaczej niż klienci o niej myślą, to widać w adresach jako pierwsze.
Domyślna odpowiedź brzmi: nie zmieniaj adresów tylko dlatego, że mogłyby być ładniejsze. Każda migracja to ryzyko utraty części widoczności i praca, którą trzeba wykonać dokładnie, a nie w połowie.
Zmieniam wtedy, gdy adresy zawierają identyfikatory sesji, gdy ta sama treść jest dostępna pod wieloma adresami bez kanonizacji, gdy struktura kompletnie nie odpowiada nawigacji albo gdy i tak trwa przebudowa witryny. W tym ostatnim przypadku porządek w adresach jest tanim dodatkiem, a nie osobnym projektem.
Gdy już decyduję się na zmianę, kolejność jest zawsze taka sama:
Pierwsze dwa tygodnie po zmianie to jedyny moment, w którym da się jeszcze tanio naprawić błąd.
Codziennie zaglądam do raportu indeksowania w Search Console i patrzę, czy nie rośnie liczba błędów i czy stare adresy przechodzą do statusu przekierowanych, a nowe do zaindeksowanych. Równolegle sprawdzam statystyki indeksowania — tam widać, czy robot nie utknął na starej strukturze.
Do tego dwie rzeczy poza panelem. Logi serwera pokazują dokładnie, po jakich adresach chodzi robot, i to najuczciwsze źródło informacji o tym, czy porządek faktycznie zadziałał. A po miesiącu wracam do raportu skuteczności i porównuję okres do okresu na poziomie pojedynczych adresów, nie całej witryny — spadek widoczności zawsze zaczyna się w wąskim wycinku i tylko tam da się go zauważyć na czas.
Używamy plików cookies, aby ułatwić Ci nawigację oraz wykonywanie określonych funkcji. Szczegółowe informacje o wszystkich plikach cookies znajdziesz w każdej kategorii zgody poniżej.
Pliki cookies oznaczone jako "Niezbędne" są przechowywane w Twojej przeglądarce, ponieważ są one kluczowe dla zapewnienia podstawowych funkcji strony.
Używamy również plików cookies firm trzecich, które pomagają nam analizować, w jaki sposób korzystasz z tej strony, zapamiętują Twoje preferencje oraz dostarczają treści i reklamy odpowiednie dla Ciebie. Te pliki cookies będą przechowywane w Twojej przeglądarce tylko za Twoją uprzednią zgodą.
Możesz zdecydować, czy chcesz włączyć lub wyłączyć niektóre bądź wszystkie te pliki cookies, jednak wyłączenie niektórych z nich może wpłynąć na Twoje doświadczenia podczas przeglądania strony.
| Cookie | Czas przechowywania | Opis |
|---|---|---|
| __cf_bm | 13 minutes | Cloudflare bot management — distinguishes humans from bots. |
| rc::* | Persistent | Google reCAPTCHA — localStorage holding anti-bot challenge state. |
| Cookie | Czas przechowywania | Opis |
|---|---|---|
| wpEmojiSettingsSupports | Session | WordPress — sessionStorage flag caching whether the browser can render emoji (feature detection). |
| ytidb* | Persistent | YouTube — IndexedDB storing playback/search state for embedded videos. |
| Cookie | Czas przechowywania | Opis |
|---|---|---|
| _ga_* | 400 days | Google Analytics 4 — persists session state per property. |
| _ga | 400 days | Google Analytics — distinguishes unique users via a client id. |
| Cookie | Czas przechowywania | Opis |
|---|---|---|
| NID | 183 days | Google — stores preferences for personalized ads. |
| fr | 90 days | Meta — encrypted Facebook id and browser id for ads. |
| _gcl_au | 90 days | Google AdSense/Ads — experiments with advertising efficiency (conversion linker). |
| Cookie | Czas przechowywania | Opis |
|---|---|---|
| __Secure-YNID | 180 days | |
| YSC | Session | |
| __Secure-ROLLOUT_TOKEN | 180 days | |
| VISITOR_INFO1_LIVE | 180 days | |
| VISITOR_PRIVACY_METADATA | 180 days | |
| datr | 400 days | |
| sb | 400 days | |
| wd | 7 days |