Przekierowanie www ↔ bez www
ważność średniamierzonysposób www_redirect
Czy jedna forma przekierowuje na drugą. Brak to dwie różne wersje strony i problem z SEO oraz cookies.
WIKI
artykuł z 17.09.2026 · źródeł 9Przekierowanie www ↔ bez www to parametr monitoringu stron internetowych, który sprawdza, czy obie formy adresu domeny — z przedrostkiem www. i bez niego — prowadzą do jednej formy kanonicznej. Pomiar sprawdza, czy forma z www ma rekord w DNS, wysyła żądanie na każdą z form, podąża za przekierowaniami i porównuje adresy końcowe. Problemem są dwie formy odpowiadające kodem 200 bez przekierowania albo forma prowadząca na inną domenę; forma, która nie odpowiada, to sprawa dostępności, nie formy adresu. Google zaleca, by spośród adresów, pod którymi dostępna jest strona, na przykład https://example.com/home albo https://www.example.com, wybrać jeden preferowany i przekierować na niego ruch z pozostałych [1].
Jak działa
Dla DNS example.com i www.example.com to dwie osobne nazwy z własnymi rekordami. Nazwa główna domeny jest węzłem, w którym stoją rekordy NS strefy [4] i dokładnie jeden rekord SOA [5]. Każda z form może więc wskazywać inny serwer albo nie mieć rekordu wcale.
Samo przekierowanie jest sprawą serwera HTTP: odpowiedź z kodem 3xx i nagłówkiem Location. Kody i ich różnice opisuje artykuł Przekierowanie HTTP → HTTPS. Kanonikalizacja to wybór reprezentatywnego adresu treści: Google grupuje strony o tej samej treści głównej i wybiera jedną jako kanoniczną [3]. Stronę kanoniczną robot odwiedza regularniej, a duplikaty rzadziej, żeby zmniejszyć obciążenie [3]. Przekierowanie jest dla Google silnym sygnałem wyboru, podobnie jak adnotacja rel="canonical", a obecność w mapie witryny — słabym [2]. Jeśli właściciel nie wskaże adresu kanonicznego, Google wybierze go sam [2].
Poprawna konfiguracja to taka, w której jedna forma odpowiada treścią, a druga stałym przekierowaniem na nią. Pozostałe przypadki różnią się skutkami.
Standardy i specyfikacje
- RFC 1034, § 3.6.2: rekord CNAME oznacza nazwę jako alias nazwy kanonicznej, a jeśli w węźle jest CNAME, nie powinno tam być innych danych [4]. Rekordy NS stoją w węźle głównym strefy [4], a RFC 1035 przewiduje tam dokładnie jeden rekord SOA [5]. Nazwa główna domeny nie może więc być aliasem CNAME, a forma z
wwwmoże. - Spłaszczanie CNAME i rekordy alias obchodzą to ograniczenie po stronie dostawcy DNS. Cloudflare w 2014 r. wprowadził spłaszczanie CNAME: jego serwery autorytatywne same przechodzą łańcuch CNAME do rekordu A i zwracają adres IP [6]. Amazon Route 53 pozwala utworzyć w nazwie głównej rekord alias, choć nie pozwala na CNAME, i odpowiada na zapytanie adresami IP zasobu docelowego [7].
- Google Search Central zaleca przekierowanie z pozostałych adresów na preferowany [1] i przestrzega przed certyfikatem dla złego wariantu hosta: certyfikat musi pasować do pełnego adresu witryny albo być certyfikatem wieloznacznym [2].
- RFC 9525: symbol wieloznaczny w certyfikacie pasuje tylko do jednej etykiety nazwy [8], więc certyfikat
*.example.comnie obejmuje samegoexample.com. Szczegóły: Ważność certyfikatu SSL. - RFC 6265 ustala, że atrybut
Domainwskazuje hosty, do których ciasteczko będzie wysyłane: przy wartościexample.comprzeglądarka dołączy je do żądań doexample.com,www.example.comiwww.corp.example.com[9]. Bez tego atrybutu ciasteczko wraca tylko do serwera, który je ustawił [9].
Zagrożenia i skutki
Dwie wersje strony. Gdy obie formy odpowiadają kodem 200 bez przekierowania, powstają duplikaty. Wskazanie adresu kanonicznego pozwala wyszukiwarce połączyć sygnały poszczególnych adresów, np. linki, w jeden adres preferowany [2]; bez tego Google wybiera sam [2], a wskazania właściciela traktuje jako podpowiedź i może wybrać inny adres [3]. Rozproszone adresy utrudniają też zebranie statystyk dla jednej treści [2].
Niespójne sesje. Ciasteczko ustawione przez example.com bez atrybutu Domain wraca tylko do tego hosta [9], więc zalogowany użytkownik po przejściu na www.example.com może nie zostać rozpoznany. RFC 6265 ostrzega, że część przeglądarek błędnie wysyła takie ciasteczko także do www.example.com [9], więc zachowanie strony bywa różne w różnych przeglądarkach. Przeglądarka odrzuca też ciasteczko, którego Domain nie obejmuje serwera ustawiającego [9].
Certyfikat tylko dla jednej formy. Przekierowanie z https://www.example.com przeglądarka zobaczy dopiero po udanym uzgodnieniu TLS dla nazwy z www. Certyfikat musi pasować do adresu witryny [2], a certyfikat wieloznaczny nie obejmuje nazwy głównej [8]. Przy braku dopasowania odwiedzający widzi błąd certyfikatu, zanim dotrze do przekierowania.
Hosting wskazywany przez CNAME. Gdy usługę hostingową wskazuje się rekordem CNAME, tego rekordu nie da się postawić w nazwie głównej [4]. Cloudflare opisuje, że przez to domeny bez www nie mogły wskazywać usług takich jak AWS ELB czy Heroku, a właściciele musieli używać formy z www albo stałych adresów IP [6]. Jeśli stały adres się zmieni, a forma z www podąża za CNAME, działa tylko jedna z form.
Przykłady
| Konfiguracja | Forma z www | Forma bez www | Ocena |
|---|---|---|---|
| Przekierowanie z www na formę bez www | 301 na example.com | 200 | jeden adres preferowany [1] |
| Przekierowanie z formy bez www na www | 200 | 301 na www.example.com | jeden adres preferowany [1] |
| Brak przekierowania | 200 | 200 | duplikat, adres kanoniczny wybiera Google [2] [3] |
| CNAME tylko dla www, nazwa główna ze starym adresem IP | 200 | stary serwer albo błąd | CNAME w nazwie głównej niedozwolony [4] [6] |
| Nazwa główna przez spłaszczenie CNAME albo alias | 200 | 200 lub 301 | adres IP podaje serwer DNS dostawcy [6] [7] |
Certyfikat tylko dla example.com | błąd certyfikatu przed przekierowaniem | 200 | certyfikat musi pasować do nazwy [2] [8] |
| Ciasteczko sesji bez atrybutu Domain | sesja nierozpoznana | sesja aktywna | ciasteczko tylko dla hosta, który je ustawił [9] |
- [1] Redirects and Google Search · Google Search Central
- [2] How to specify a canonical URL with rel="canonical" and other methods · Google Search Central
- [3] What is URL canonicalization · Google Search Central
- [4] RFC 1034 — Domain Names: Concepts and Facilities · IETF
- [5] RFC 1035 — Domain Names: Implementation and Specification · IETF
- [6] Introducing CNAME Flattening: RFC-Compliant CNAMEs at a Domain's Root · Cloudflare
- [7] Choosing between alias and non-alias records — Amazon Route 53 Developer Guide · Amazon Web Services
- [8] RFC 9525 — Service Identity in TLS · IETF
- [9] RFC 6265 — HTTP State Management Mechanism · IETF
STATS
wyniki z systemu · tylko liczby zbiorcze- Stron zmierzonych
- 204w ostatnim dniu pomiaru
- OK
- 279odczytów
- Fail
- 44odczytów
- Nie dało się sprawdzić
- 6timeout, blokada, limit zapytań
- Udział fail
- 13,6%bez „nie dało się”
- Stron łącznie
- 206choć jeden odczyt
- OK
- 1657odczytów
- Fail
- 231odczytów
- Nie dało się sprawdzić
- 63timeout, blokada, limit zapytań
- Udział fail
- 12,2%bez „nie dało się”
| Dzień | fail | nie dało się sprawdzić | ok |
|---|---|---|---|
| 23.08.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 24.08.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 25.08.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 26.08.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 27.08.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 28.08.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 29.08.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 30.08.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 31.08.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 01.09.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 02.09.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 03.09.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 04.09.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 05.09.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 06.09.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 07.09.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 08.09.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 09.09.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 10.09.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 11.09.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 12.09.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 13.09.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 14.09.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 15.09.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 16.09.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 17.09.2026 | 1 odczyt | 33 odczyty | 172 odczyty |
| 18.09.2026 | 14 odczytów | 4 odczyty | 188 odczytów |
| 19.09.2026 | 81 odczytów | 14 odczytów | 535 odczytów |
| 20.09.2026 | 91 odczytów | 6 odczytów | 483 odczyty |
| 21.09.2026 | 44 odczyty | 6 odczytów | 279 odczytów |
- Otwarte teraz
- 48stron: 48 · w okresie łaski: 4
- Nowe w ostatnim dniu
- 421.09.2026
- Otwarte od początku
- 159stron: 90
- Zamknięte
- 107od początku
- Mediana trwania
- 24 h 1 minod wykrycia do zamknięcia
| Ustalenie | Skutek | Otwarte teraz | Łącznie | Zamknięte |
|---|---|---|---|---|
| Przekierowanie www ↔ bez www www_redirect | WARNING | 24 | 119 | 91 |
| Częściowa dostępność partial_availability | WARNING | 24 | 40 | 16 |
| Dzień | nowe ustalenia |
|---|---|
| 23.08.2026 | 4 ustalenia |
| 24.08.2026 | 2 ustalenia |
| 25.08.2026 | 2 ustalenia |
| 26.08.2026 | 2 ustalenia |
| 27.08.2026 | 0 ustaleń |
| 28.08.2026 | 0 ustaleń |
| 29.08.2026 | 0 ustaleń |
| 30.08.2026 | 4 ustalenia |
| 31.08.2026 | 4 ustalenia |
| 01.09.2026 | 1 ustalenie |
| 02.09.2026 | 0 ustaleń |
| 03.09.2026 | 0 ustaleń |
| 04.09.2026 | 0 ustaleń |
| 05.09.2026 | 0 ustaleń |
| 06.09.2026 | 0 ustaleń |
| 07.09.2026 | 0 ustaleń |
| 08.09.2026 | 0 ustaleń |
| 09.09.2026 | 11 ustaleń |
| 10.09.2026 | 0 ustaleń |
| 11.09.2026 | 0 ustaleń |
| 12.09.2026 | 0 ustaleń |
| 13.09.2026 | 0 ustaleń |
| 14.09.2026 | 0 ustaleń |
| 15.09.2026 | 0 ustaleń |
| 16.09.2026 | 0 ustaleń |
| 17.09.2026 | 34 ustalenia |
| 18.09.2026 | 17 ustaleń |
| 19.09.2026 | 15 ustaleń |
| 20.09.2026 | 1 ustalenie |
| 21.09.2026 | 4 ustalenia |
- Przebiegów
- 60sposób www_redirect
- W 30 dni
- 60przebiegów
- Ostatni
- 19.09.2026start przebiegu
- Stron w przebiegach
- 20461 przebiegów bez liczby stron
CARD
karta z kodu CREATO_PING, odczyt 17.09.2026| Obszar i ważność | Dostępność · średnia (D06) |
|---|---|
| Workflow i częstotliwość | creato_ping_avail_v2 działa na LAB247cron co 24 h, osobno T1–T4 · Strony w stanie DOWN i WARNING dostają dodatkowy odczyt co 6 h (timer availability_recheck poza n8n). Od 2026-09-16 sposób ssl daje odczyt ssl_expiry (dni do wygaśnięcia certyfikatu); od 2026-09-17 odczyty trafiają do check_results. |
| Sonda i helper | sposób www_redirect · CREATO_PING/helpers/www_redirect.py |
| Testy |
|
| Typ wyniku | enum: ok / fail / timeout; od skanu 2026-09-18 04:07 UTC odczyt niesie w polu extra notę z powodem, regułę i adres końcowy każdej formy (nota, regula, www_final, root_final) |
| Jednostka | brak — wynik jakościowy (dokładny host adresu końcowego obu form, z przedrostkiem www.) |
| Próg i reguła | Timeout 7,0 s z jednym ponowieniem, limit 5 przekierowań — stałe w helperze, poza config.py. Reguła: fail = dwie formy z kodem 200 na różnych hostach albo forma kończąca na obcej domenie; wszystko inne, co odpowiedziało, = ok. Reguła kanoniczności jest domyślna w kodzie; starą (host po odcięciu www.) włącza tylko dokładna wartość „stara” zmiennej środowiskowej. |
| Gdzie leżą pokrętła | CREATO_PING/helpers/www_redirect.py → _TIMEOUT, _MAX_REDIRECTS, _fetch_kanonicznosc (_retries=1), _ma_dns, _check_one_kanonicznoscCREATO_PING .env na serwerze monitoringu → CREATO_PING_WWW_REDIRECT_REGULA — wyjście awaryjne: tylko wartość „stara” przywraca starą regułę; brak linii, pusto albo literówka = kanonicznośćCREATO_PING/helpers/partial_availability_check.py → _is_subdomain, _public_suffix (wyjątek subdomen)CREATO_PING/config/public_suffix_list.dat (Public Suffix List, wersja 2026-09-15; brak pliku = błąd przy starcie, bez cichego powrotu do starej listy)CREATO_PING/helpers/site_params.py → CRITICAL_CHECK_TYPES (www_redirect poza listą) |
| Retencja odczytów | Każdy odczyt w tabeli check_results bazy LAB247; kod LAB247 tej tabeli nie czyści. Polityki retencji nikt jeszcze nie ustalił. |
| Znane rozbieżności |
|
| Karta przepisana z | CREATO_PING/helpers/www_redirect.py · CREATO_PING/helpers/tests/test_www_redirect.py · CREATO_PING/helpers/partial_availability_check.py · CREATO_PING/config/public_suffix_list.dat · CREATO_PING/helpers/site_params.py · CREATO_PING/helpers/clickup_writer_v2.py · CREATO_PING/tools/avail_writer_input.py · CREATO_PING/helpers/checks_publish.py · LAB247/site/src/lib/ingest/schema.ts · odczyt 17.09.2026 |
1. fail albo timeout = subtask w okresie łaski (IN PROGRESS, bez alertu). 2. z rzędu = WARNING — www_redirect nie jest sprawdzeniem krytycznym. Pierwszy odczyt ok zamyka subtask. Formy z błędem TLS albo połączenia ten parametr nie zgłasza: to ustalenie partial_availability (dokładnie jedna forma z kodem 200), które po 2. odczycie daje CONFIG, bijący DOWN — opis na karcie SSL: ważność certyfikatu. Przy zmianie reguły 2026-09-17 33 otwarte subtaski (forma www z błędem 24, subdomena 5, brak www w DNS 4) zamknięto jako complete bez tagu werdyktu — to zmiana reguły, nie naprawa.
| Ustalenie | Powaga | Pewność | Skutek | Subtask / alarm | Co zrobić |
|---|---|---|---|---|---|
| Przekierowanie www ↔ bez wwwwww_redirect | Normalne | Ewidentne | WARNING | tak / nie | Ustaw kanoniczną formę domeny i przekierowanie 301. |
| Częściowa dostępnośćpartial_availability | Wysokie | Ewidentne | WARNING | tak / nie | Popraw certyfikat lub vhost brakującej formy. |
LOOP
pętli: 2Trafności jeszcze nie liczymy: zamknięcie subtaska nie niesie dziś werdyktu (prawdziwy / fałszywy / nie dało się sprawdzić). Cztery liczby pojawią się, gdy każde zamknięcie dostanie werdykt — to warunek startu pętli 1.
Sygnał: Adres bez www odpowiadał 200, a forma z www miała certyfikat samopodpisany — silnik eskalował to do DOWN. · dotyczy też: Połączenie TCP, Rozwiązywanie DNS, Kod odpowiedzi HTTP, SSL: ważność certyfikatu
- 1. Zbiórkaręcznieodczyt z nocnego skanu, bez zapisu per strona
- 2. Werdyktręcznieużytkownicy widzą sprawną stronę, więc alarm był fałszywy
- 3. Miarabrakliczników trafności wtedy nie było
- 4. Kartabrakkarta parametru powstała 2026-09-16
- 5. Zmianazrobionesprawdzenie częściowej dostępności i status CONFIG
- 6. Replaybrakbrak zapisanych odczytów do replayu
| Data | Zmiana | Powód | Wpływ na system | Commit · replay |
|---|---|---|---|---|
| 2026-08-04 | Częściowa dostępność (jedna forma 200, druga zepsuta) daje status CONFIG, który bije DOWN.helpers/site_params.py · helpers/partial_availability_check.py | Błąd konfiguracji do naprawy to nie awaria; realny DOWN zostaje, gdy nie odpowiada żadna forma. | cały system Nowy status strony nad DOWN; dotyczy wszystkich sprawdzeń krytycznych (tcp, dns, http, ssl). | 091e318bez replayubez zapisu zatwierdzenia |
Sygnał: Karta parametru (2026-09-16): reguła odcinała www. z obu hostów końcowych, więc dwie formy z kodem 200 bez przekierowania dawały ok, a wszystkie ustalenia w bazie były timeoutami błędu sieci jednej z form — w tym subdomen bez formy www.
- 1. Zbiórkaręczniesuchy przebieg 206 stron obiema regułami, wyniki w pliku
- 2. Werdyktręczniewłaściciel: najpierw suchy przebieg, potem włączenie
- 3. Miararęcznieok / fail / timeout: stara 169 / 1 / 36, nowa 191 / 13 / 2
- 4. Kartazrobionekarta przepisana pod nową regułę 2026-09-17
- 5. Zmianazrobionereguła kanoniczności za przełącznikiem, włączona 2026-09-17 09:34 UTC
- 6. Replayręczniesuchy przebieg na żywo z maszyny lokalnej, nie po zapisanych odczytach
| Data | Zmiana | Powód | Wpływ na system | Commit · replay |
|---|---|---|---|---|
| 2026-09-17 | ok = jedna forma przekierowuje na drugą, brak www w DNS, subdomena albo obie formy bez 200; fail = dwie wersje 200 bez przekierowania albo forma na obcej domenie; timeout ponawiany raz; błąd TLS lub połączenia formy = ok z notą.helpers/www_redirect.py · helpers/tests/test_www_redirect.py | Stara reguła nie łapała duplikatu, dla którego parametr powstał, a dublowała częściową dostępność. Obie formy z 403 (WAF) albo 500 to dostępność, nie duplikat; bez ponowienia timeout zasłaniał dwie wersje strony. | cały system 33 otwarte subtaski (forma www z błędem 24, subdomena 5, brak www w DNS 4) zamknięte jako complete bez tagu werdyktu — zwykłe zamknięcia dalej dostają tag „naprawione”. Nowe fail u 12 stron; u 4 status strony przejdzie z IN PROGRESS na WARNING. Błąd TLS formy www zostaje wyłącznie przy partial_availability (CONFIG). | 68e4654bez replayuzatwierdził: właściciel, 2026-09-17 (najpierw suchy przebieg, potem włączenie i zamknięcie bez werdyktu) |