Kod 403 Forbidden
Co oznacza błąd HTTP 403, jak Google go traktuje (blokada podobna do noindex), jakie są częste przyczyny (kontrola dostępu, blokowanie botów, błędne uprawnienia) oraz jak naprawiać 403 w SEO.
Języki
1 sygnał dowodowy na tej stronie
- Powiązane działające narzędzieHTTP Status & Redirect Checker
403 Forbidden oznacza, że serwer zrozumiał żądanie, ale odmówił jego realizacji — odmowa dostępu nie musi w ogóle dotyczyć danych uwierzytelniających (serwer może nawet wysłać 404, aby ukryć istnienie zabronionego zasobu). To nie 404 („niczego tu nie ma”) ani 401 („najpierw się uwierzytelnij”); 403 to aktywne „nie możesz tego dostać”. W SEO 403 utrzymujący się na stronie, która ma być publiczna, nie pozwala jej trafić do indeksu Google — rezultat podobny do noindex, ale mechanizm inny, bo Google nie może odczytać treści z odpowiedzi 4xx. Ponieważ Googlebot nigdy nie wysyła danych uwierzytelniających, 403 dla niego warto zbadać, zamiast zakładać, że jest zamierzony — częste przyczyny to filtr botów CDN/WAF, blokada IP/user-agenta serwera, wtyczka bezpieczeństwa albo błąd .htaccess/uprawnień, choć brak wiarygodnych danych o częstości. Nigdy nie używaj 403 do ograniczania crawlowania (do tego służą 429/503, tylko przez krótki czas). Najpierw sprawdź intencję: niektóre 403-y (staging, panel administracyjny, treść z dostępem) są poprawne i nie wymagają naprawy. Ważne odwrócenie: 403 na samym robots.txt jest traktowany permisywnie, a 403 na stronie jest twardą blokadą.
TL;DR — 403 Forbidden oznacza, że serwer zrozumiał żądanie, ale odmawia jego realizacji — osoba, która je wysłała, nie ma uprawnień. To coś innego niż 404 („niczego tu nie ma”) i 401 („najpierw się zaloguj”). W SEO strona, która stale zwraca 403 Googlebotowi, nie zostanie zindeksowana, a jeśli była już w indeksie, z niego wypadnie — więc jeśli chcesz, aby ją znajdowano, 403 jest problemem do naprawienia.
Co naprawdę oznacza 403
Jeśli jesteś odwiedzającym, który trafił na 403 w witrynie, której nie prowadzisz: jest to reguła po stronie serwera, a nie problem z przeglądarką. Spróbuj innej sieci lub urządzenia, upewnij się, że nie korzystasz z blokowanego przez witrynę VPN-u, i wyczyść ciasteczka — jeśli jednak problem trwa, naprawa leży po stronie właściciela witryny, a reszta tego artykułu jest napisana właśnie dla niego.
Gdy Ty (albo bot wyszukiwarki) prosisz o stronę, serwer odsyła kod statusu. 200 oznacza „oto ona”. 403 Forbidden oznacza „rozumiem, o co prosisz, ale odmawiam Ci tego”. Odmowa nie musi dotyczyć danych uwierzytelniających — serwer może odmówić z innych powodów, a nawet zwrócić 404, jeśli chce ukryć samo istnienie zabronionego zasobu. Evidence for this claim A 403 response means the server understood the request but refuses to fulfill it, and authenticating does not necessarily make a difference. Scope: RFC 9110 defines the protocol semantics; it does not identify the application, firewall, or policy responsible for a specific response. Confidence: high · Verified: IETF: RFC 9110 §15.5.4 — 403 Forbidden
Najłatwiejszy sposób na uporządkowanie kodów 4xx:
- 404 Not Found — „Nic tu nie ma”. Strona nie istnieje.
- 403 Forbidden — „Coś tu jest, ale nie możesz tego dostać”. Aktywna blokada.
- 401 Unauthorized — „Musisz się najpierw zalogować/uwierzytelnić”. (403 jest silniejszy: samo zalogowanie się niczego nie zmieni.)
403 nie oznacza więc, że serwer jest zepsuty. Serwer działa dokładnie tak, jak mu polecono — pytanie brzmi, czy polecono mu właściwą rzecz.
Dlaczego ma to znaczenie dla SEO
Googlebot musi móc pobrać stronę, aby ją zindeksować. Jeśli prosi o stronę i dostaje 403, Google nie może odczytać z tej odpowiedzi żadnej treści — odmowa następuje wcześniej. Google nie zindeksuje strony zwracającej 403, a strona, która była zindeksowana, z czasem wypadnie z wyników, jeśli nadal będzie go zwracać. Rezultat przypomina dodanie noindex — strona znika z Google — ale mechanizm jest inny: znacznik noindex musi zostać pobrany i odczytany, natomiast 403 uniemożliwia Google odczytanie czegokolwiek. Evidence for this claim Google does not index 4xx URLs and removes already-indexed 4xx URLs over time. Scope: Google's crawler documentation supports the indexing outcome for persistent 403 responses, not the article's analogy to noindex. Confidence: high · Verified: Google: How HTTP status codes affect Google's crawlers
Oto zwrot, dzięki któremu warto rozumieć 403-y: Googlebot nigdy się nie loguje. Nie wysyła haseł ani danych uwierzytelniających. Zatem 403 — który często oznacza „nie zaakceptowano Twoich danych” — nie może oznaczać tego konkretnie w przypadku Googlebota. Nie znaczy to jednak automatycznie, że jest błędem: blokada może być zamierzona (witryna stagingowa, panel administracyjny, treść z dostępem, której nigdy nie chciałeś crawlowć). Oznacza natomiast, że 403 na stronie, która ma być publiczna, warto zbadać — reguła bezpieczeństwa, firewall albo wtyczka mogły uznać Googlebota za podejrzanego. Własne wytyczne Google są ograniczone tak samo: jeśli chcesz indeksować stronę, zezwól Googlebotowi wejść bez uwierzytelniania.
Co zwykle go powoduje
Nie mam twardych danych o tym, która przyczyna występuje najczęściej — potraktuj to jako listę kontrolną, a nie ranking:
- CDN albo firewall (WAF) blokujący bota — Cloudflare Bot Fight Mode często blokuje Googlebota razem ze złymi botami.
- Reguła serwera lub hostingu blokująca określone adresy IP albo user-agenty.
- Źle skonfigurowany plik
robots.txtlub.htaccess. - Wtyczka bezpieczeństwa (np. Wordfence w WordPressie) działająca zbyt agresywnie.
- Ściana logowania — wszystko za uwierzytelnianiem z założenia zwróci botowi 403; ta przyczyna jest często zamierzona, a nie błędna.
- Błędy uprawnień pliku na serwerze.
Szybka ścieżka naprawy
- W Google Search Console otwórz raport Page Indexing i znajdź pozycję “Blocked due to access forbidden (403).” (tłumaczenie) „Zablokowano z powodu odmowy dostępu (403).”
- Przepuść URL przez narzędzie URL Inspection i wybierz Test Live URL, aby zobaczyć, co obecnie otrzymuje Googlebot.
- Jeśli używasz Cloudflare albo innego CDN-u/firewalla, sprawdź jego logi bezpieczeństwa pod kątem blokowania Googlebota i przepuść zweryfikowane boty wyszukiwarek.
- Po naprawieniu reguły użyj w Search Console opcji Validate Fix.
I jeszcze jedna rzecz, której nie należy robić: nigdy nie używaj 403, aby próbować spowolnić Googlebota. To nie działa i może usunąć strony z indeksu. Jeśli bot przeciąża serwer, do tego służą 429 i 503.
Chcesz poznać głębszą wersję — diagnozę Cloudflare/WAF, pułapkę 403 na robots.txt i właściwy sposób dodawania botów do allowlisty? Przejdź do karty Advanced.
TL;DR — 403 oznacza, że serwer zrozumiał żądanie i odmówił dostępu — inaczej niż 404 (usunięto) i 401 (uwierzytelnij się). Dla indeksowania rezultat przypomina
noindex: Google nie zindeksuje URL-a 403 ani usunie z indeksu takiego, który był już zindeksowany, choć mechanizm (blokada serwera/CDN-u/WAF-u) nie przypomina znacznika meta. Ponieważ Googlebot nigdy nie wysyła danych uwierzytelniających, 403 dla Googlebota jest niemal zawsze błędną konfiguracją — najczęściej filtrowaniem botów na CDN-ie/WAF-ie (Cloudflare Bot Fight Mode jest częstym sprawcą), blokadą IP/user-agenta serwera, wtyczką bezpieczeństwa albo błędem.htaccess/uprawnień. 403 nie wpływa na tempo crawlowania — nigdy nie używaj go do ograniczania (do tego służą 429/503). Ważny jest też przypadek odwrotny: 403 na samym pliku robots.txt jest traktowany permisywnie, a 403 na stronie jest twardą blokadą.
403 a 401 i 404 — najpierw uporządkuj model mentalny
Te trzy kody są stale mylone, a rozróżnienie napędza całą diagnozę. Podstawowa definicja pochodzi z samej specyfikacji HTTP, RFC 9110 §15.5.4: serwer zrozumiał żądanie i odmawia jego spełnienia. Kilka niuansów z tego samego rozdziału ma większe znaczenie, niż się zwykle zakłada:
- Odmowa nie musi dotyczyć danych uwierzytelniających. RFC 9110 pozwala zwrócić 403 z powodów niezwiązanych z uwierzytelnianiem — nie dowodzi on uniwersalnie, że żądający jest “known” (tłumaczenie) „znany” ani że w ogóle użyto danych uwierzytelniających. Nie odczytuj każdego 403 jako historii o logowaniu.
- 403 nie musi przyznawać, że zasób istnieje. Specyfikacja wyraźnie pozwala serwerowi źródłowemu, który chce ukryć, czy zabroniony zasób w ogóle istnieje, odpowiedzieć 404. Działa to też w drugą stronę: 404 nie zawsze oznacza “nothing was ever here” (tłumaczenie) „nigdy niczego tu nie było” — czasami oznacza “there’s something here, but I don’t want you to know about” (tłumaczenie) „coś tu jest, ale nie chcę, żebyś o tym wiedział”.
- 401 a 403 to nie tylko “weaker vs. stronger.” (tłumaczenie) „słabszy kontra silniejszy”. 401 jest konkretnym challenge’em uwierzytelniania — specyfikacja wymaga nagłówka
WWW-Authenticateinformującego klienta, jak się uwierzytelnić. 403 nie ma takiego wymogu; to szersza odmowa, która nie obiecuje, że ponowne uwierzytelnienie (tymi samymi albo innymi danymi) coś zmieni. Wersja MDN prostym językiem: 403 jest “similar to 401, except that … authenticating or re-authenticating makes no difference. The request failure is tied to application logic, such as insufficient permissions.” (tłumaczenie) „podobny do 401, z tym że … uwierzytelnienie lub ponowne uwierzytelnienie niczego nie zmienia. Niepowodzenie żądania jest związane z logiką aplikacji, np. niewystarczającymi uprawnieniami.” Evidence for this claim A 403 response means the server understood the request but refuses to fulfill it, and authenticating does not necessarily make a difference. Scope: RFC 9110 defines the protocol semantics; it does not identify the application, firewall, or policy responsible for a specific response. Confidence: high · Verified: IETF: RFC 9110 §15.5.4 — 403 Forbidden - 404 Not Found, dla porównania — zwykły przypadek oznacza “there’s nothing here,” (tłumaczenie) „nic tu nie ma”, choć wyżej opisano możliwość ukrywania zasobu.
To rozróżnienie jest jednym z powodów, dla których 403 dla Googlebota warto sprawdzić ponownie, zamiast traktować go jako rutynę. 401 dla bota na stronie tylko dla członków może być prawidłowy — obszar wymaga logowania. 403 dla bota na stronie, która powinna być publiczna, oznacza, że jakaś reguła uznała żądającego za niepożądanego — choć, jak opisano niżej, nadal warto potwierdzić, że strona rzeczywiście miała być publiczna, zanim nazwiesz to błędem.
Jak Google traktuje 403 (rezultat przypomina noindex, ale mechanizm jest inny)
Google zalicza 403 do reszty rodziny 4xx. Dokumentacja Search Central mówi: “Google doesn’t index URLs that return a 4xx status code, and URLs that are already indexed and return a 4xx status code are removed from the index.” (tłumaczenie) „Google nie indeksuje URL-i zwracających kod statusu 4xx, a URL-e już zindeksowane, które zwracają kod 4xx, są usuwane z indeksu.” Oraz: “All 4xx errors, except 429, are treated the same: Google crawlers inform the next processing system that the content doesn’t exist.” (tłumaczenie) „Wszystkie błędy 4xx, z wyjątkiem 429, są traktowane tak samo: crawlery Google informują kolejny system przetwarzania, że treść nie istnieje.” Google zaznacza też, że częstotliwość crawlowania znanego URL-a stopniowo maleje, im dłużej zwraca on 4xx — jest to efekt dotyczący pojedynczego URL-a, odrębny od ogólnego tempa crawlowania witryny. Evidence for this claim Google does not index 4xx URLs and removes already-indexed 4xx URLs over time. Scope: Google's crawler documentation supports the indexing outcome for persistent 403 responses, not the article's analogy to noindex. Confidence: high · Verified: Google: How HTTP status codes affect Google's crawlers
Rezultat przypomina więc noindex: strona nie trafi do indeksu, a jeśli już w nim jest, z czasem wypadnie. Mechanizm jest jednak rzeczywiście inny, a nie tylko kosmetycznie odmienny: znacznik noindex musi zostać pobrany i odczytany z HTML-a, podczas gdy 403 uniemożliwia Google odczytanie jakiejkolwiek treści — nie ma strony do przetworzenia. Dwie różne ścieżki prowadzą do tego samego braku w wynikach wyszukiwania. Dlatego w moim przewodniku po kodach statusu HTTP opisuję 403 po prostu jako “the client is known but doesn’t have access rights,” (tłumaczenie) „klient jest znany, ale nie ma praw dostępu” i zaznaczam, że takie kody powodują wypadanie stron z indeksu — choć “known” (tłumaczenie) „znany” jest tam skrótem raportowym Google, a nie twierdzeniem, że każdy 403 dotyczy uwierzytelnionego żądającego.
Dlaczego 403 dla Googlebota warto zbadać (nie zawsze jest błędem)
Ta sekcja opiera się na własnym dokumencie pomocy Google dotyczącym indeksowania stron: “HTTP 403 means that the user agent provided credentials, but was not granted access. However, Googlebot never provides credentials, so your server is returning this error incorrectly. The page will not be indexed.” (tłumaczenie) „HTTP 403 oznacza, że user-agent podał dane uwierzytelniające, ale nie uzyskał dostępu. Googlebot jednak nigdy nie podaje danych uwierzytelniających, więc serwer nieprawidłowo zwraca ten błąd. Strona nie zostanie zindeksowana.” Czytaj to w kontekście — są to wskazówki dotyczące raportu dla strony, którą Search Console zakłada, że chcesz indeksować, a nie uniwersalne twierdzenie, że każdy 403 dla Googlebota jest błędem. Googlebot się nie uwierzytelnia, więc 403 opisany wyłącznie jako “Twoje dane są niewystarczające” (tłumaczenie) „Twoje dane są niewystarczające” nie pasuje do niego — ale wiele 403-ów nie dotyczy danych uwierzytelniających, a serwer może zgodnie z prawem zdecydować, że Googlebot (albo ktokolwiek inny) nie dostanie zasobu, kropka.
Zanim zaczniesz szukać naprawy: czy ta strona naprawdę ma być publiczna i indeksowalna? Jeśli to staging, panel administracyjny, paywall albo dowolna treść z dostępem, 403 dla Googlebota jest prawidłowy i niczego nie trzeba naprawiać (więcej w sekcji „Kiedy 403 jest w porządku”). Jeśli ma być publiczna, najpewniej patrzysz na regułę, która zadziałała wobec niewłaściwego żądającego — WAF oznaczył crawler jako bota do zablokowania, blokada zakresu IP objęła adresy Google albo domyślna paranoja wtyczki bezpieczeństwa — ale nie mam wiarygodnych danych, jak często każda z tych przyczyn jest rzeczywistym źródłem, więc potraktuj poniższą listę jako kandydatów do sprawdzenia, a nie diagnozę. Wytyczne Google dla strony, która powinna być publiczna: dopuść użytkowników bez logowania albo jawnie zezwól Googlebotowi bez uwierzytelniania (po wcześniejszym potwierdzeniu jego tożsamości — więcej niżej).
403 nie wpływa na tempo crawlowania — nie używaj go do ograniczania
Ludzie czasami sięgają po 403 (albo 404), aby skłonić Googlebota do odpuszczenia przeciążonego serwera. Nie rób tego. Google mówi wprost: “Don’t use 401 and 403 status codes for limiting the crawl rate. The 4xx status codes, except 429, have no effect on crawl rate.” (tłumaczenie) „Nie używaj kodów statusu 401 i 403 do ograniczania tempa crawlowania. Kody statusu 4xx, z wyjątkiem 429, nie wpływają na tempo crawlowania.” Warto precyzyjnie określić zakres: Google osobno mówi, że częstotliwość crawlowania pojedynczego znanego URL-a stopniowo maleje, im dłużej zwraca on 4xx — ale nie jest to ograniczanie całej witryny. Jeśli potrzebujesz tego drugiego, 403 nie pomoże.
Gary Illyes napisał o tym cały tekst (Don’t 404 my yum): “All 4xx HTTP status codes (again, except 429) will cause your content to be removed from Google Search.” (tłumaczenie) „Wszystkie kody statusu HTTP 4xx (ponownie z wyjątkiem 429) spowodują usunięcie treści z wyszukiwarki Google.” Właściwą awaryjną dźwignią jest 500, 503 lub 429 zwracany przez krótki czas (godziny, nie dni) — i nawet to nie jest bezwarunkowe: Google ostrzega, że utrzymujące się odpowiedzi 5xx przez wiele dni również grożą wypadnięciem stron z indeksu, więc liczą się zakres i czas trwania, a nie tylko wybrany kod. Relacja Barry’ego Schwartza z wcześniejszego zdarzenia ujęła stawkę dosadnie: witryny “lost load[s] of their pages from our index because they were serving them with a 403 status code instead of a 503.” (tłumaczenie) „straciły mnóstwo stron z naszego indeksu, ponieważ serwowały je z kodem statusu 403 zamiast 503.” 503 jest rozumiany jako tymczasowy, a 403 prowadzi do usunięcia z indeksu.
Pułapka robots.txt: 403 na robots.txt jest permisywny, a nie restrykcyjny
To rozróżnienie pomija prawie każdy konkurencyjny artykuł, a odwraca intuicję. 403 na stronie jest twardą blokadą. Natomiast 403 na samym pliku robots.txt jest traktowany odwrotnie. Specyfikacja robots.txt Google mówi: “Google’s crawlers treat all 4xx errors, except 429, as if a valid robots.txt file didn’t exist. This means that Google assumes that there are no crawl restrictions.” (tłumaczenie) „Crawlery Google traktują wszystkie błędy 4xx, z wyjątkiem 429, tak jakby prawidłowy plik robots.txt nie istniał. Oznacza to, że Google zakłada brak ograniczeń crawlowania.”
Evidence for this claim A 403 on `/robots.txt` is handled differently from a 403 on a page: Google treats a non-429 4xx robots response as if no valid robots file exists and assumes no restrictions from that file. Scope: robots.txt fetch only Confidence: high · Verified: How Google interprets the robots.txt specificationJeśli więc firewall zacznie zwracać 403 dla robots.txt, Google uzna, że nie masz żadnych reguł, i będzie crawlowć swobodnie — także ścieżki, których nie chcesz udostępniać. Barwna wersja Illyesa: jeśli miałeś regułę blokującą dostęp do swojej “brudnej bielizny”, teraz Googlebot też się o niej dowie. Nie myl „mój robots.txt zwrócił 403” (Google ignoruje teraz Twoje reguły) z „moje strony zwróciły 403” (te URL-e wypadają z indeksu). Skutki są przeciwne, a błędne rozpoznanie przypadku sprawia, że naprawiasz niewłaściwą rzecz.
Jak Bing traktuje 403
Szczerze mówiąc, publiczna dokumentacja Binga dotycząca konkretnie 403 jest skromniejsza niż dokumentacja Google, więc ograniczę zakres zamiast go sztucznie rozbudowywać. Bingbot jest blokowany przez te same mechanizmy co Googlebot — reguły robots.txt, blokady IP/user-agenta na poziomie serwera oraz reguły WAF/firewalla. Bing Webmaster Tools pokazuje błędy crawlowania w alertach dotyczących takich błędów. Praktyczny wniosek jest taki sam w obu wyszukiwarkach: przepuść zweryfikowanego crawlera przez warstwę bezpieczeństwa i sprawdź bota na podstawie opublikowanych zakresów IP oraz odwrotnego DNS, a nie na podstawie samego user-agenta. Traktuj Binga jako przypomnienie, że „napraw Googlebota” nie oznacza automatycznie „napraw wszystkie boty” — po zmianie WAF-u sprawdź narzędzia obu wyszukiwarek.
Najczęstsze przyczyny (bez rankingu — nie mam danych o częstości w różnych witrynach)
Ochrona botów CDN/WAF — najczęściej pomijana przyczyna w istniejących treściach SEO. Od tego zacząłbym sprawdzanie w 2026 roku, choć nie mogę powiedzieć, jak często jest to rzeczywisty winowajca w porównaniu z poniższymi przyczynami. Cloudflare Bot Fight Mode, Super Bot Fight Mode, zarządzane reguły WAF i niestandardowe reguły firewalla rutynowo zwracają 403 Googlebotowi i Bingbotowi jako szkodę uboczną. Wskazówka: blokada jest na brzegu sieci, więc serwer źródłowy i CMS wyglądają zupełnie poprawnie, a GSC nadal pokazuje 403. Sprawdź Security Events w panelu CDN pod kątem wyzwania lub zablokowania crawlera.
2. Blokady IP lub user-agenta na poziomie serwera/hostingu. Niektórzy dostawcy domyślnie blokują według user-agenta albo ograniczają tempo, a zakresy IP zablokowane z myślą o nadużyciach mogą objąć adresy crawlerów.
3. Błędna konfiguracja robots.txt/.htaccess. Pojedyncze Deny from albo zepsuta reguła przepisywania może zabronić dostępu do całego katalogu. (Pamiętaj też o pułapce robots.txt opisanej wyżej.)
4. Wtyczki bezpieczeństwa. Wordfence, iThemes Security i podobne narzędzia mają agresywne ustawienia domyślne blokowania botów, które mogą obejmować prawidłowe crawlery.
5. Ściany logowania / treść uwierzytelniona. Wszystko za uwierzytelnianiem z założenia zwraca botowi odpowiedź odmowną — Googlebot nigdy się nie loguje. Ta przyczyna jest często zamierzona (zobacz ostatnią sekcję).
6. Błędy uprawnień plików/katalogów. Klasyczna przyczyna po stronie administratora serwera. W WordPressie Rank Math dokumentuje rozsądne wartości — katalogi 755/750, pliki 644/640, wp-config.php 400/440 — oraz „regenerate .htaccess” w ustawieniach Permalinks jako częstą naprawę.
7. Złośliwe oprogramowanie / przejęta witryna wstrzykujące złe reguły dostępu oraz 8. blokowanie geograficzne, które przypadkiem obejmuje zakres IP crawlera.
Diagnozowanie 403 — ustal, która warstwa go wystawia
Większość poradników od razu mówi „wyłącz wtyczki”. Prawdziwa umiejętność polega na ustaleniu, która warstwa odrzuca żądanie — a sam kod 403 tego nie mówi; potrzebujesz nagłówków odpowiedzi, logów albo wpisu w zdarzeniach bezpieczeństwa, który rzeczywiście wskaże CDN, WAF, aplikację, hosting, uprawnienia, geografię lub cache, zanim nazwiesz winowajcę. Nie przechodź od razu do „to pewnie WAF” bez dowodów. Tak różni się naprawa w zależności od warstwy:
- GSC Page Indexing → „Blocked due to access forbidden (403)”, aby zobaczyć dotknięte URL-e, a następnie URL Inspection → Test Live URL, aby sprawdzić bieżącą odpowiedź.
- Odtwórz problem przez curl, zmieniając user-agenty, aby potwierdzić kod faktycznie zwracany przez serwer:
Jeśli zwykły user-agent przeglądarki dostaje# As a generic client curl -I https://example.com/page/ # Spoofing Googlebot's UA (tests UA-based rules) curl -I -A "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" https://example.com/page/200, a user-agent Googlebota dostaje403, znalazłeś regułę user-agenta. - Sprawdź własny status robots.txt (czy on zwraca 403? To inny problem — zobacz wyżej).
- Przejrzyj Security Events CDN-u/WAF-u pod kątem wyzwania lub zablokowania crawlera.
- Zweryfikuj, czy crawler naprawdę jest Googlebotem, korzystając z odwrotnego i zgodnego DNS-u, a nie z ciągu user-agenta (który łatwo podrobić).
- Izoluj problem, wyłączając elementy etapami — po jednej regule WAF-u lub wtyczce — aż 403 zniknie.
Naprawa — dodawaj boty do allowlisty właściwie
Kusząca naprawa polega na dodaniu do allowlisty ciągu user-agenta Googlebota. Nie poprzestawaj na tym — ciągi user-agentów łatwo podrobić, więc allowlista oparta wyłącznie na UA jest luką bezpieczeństwa, która przepuści każdego scrapera podającego się za Googlebota. Prawidłowa weryfikacja wygląda tak:
- Potwierdź boty przez odwrotny i zgodny DNS albo na podstawie opublikowanych zakresów IP Google/Binga.
- Większość CDN-ów/WAF-ów oferuje kategorię „verified bots”, która wykonuje tę walidację — wybierz ją zamiast surowej reguły dopuszczającej UA.
- Napraw konkretną regułę (zarządzaną regułę WAF-u, jedną regułę firewalla albo jedno ustawienie wtyczki), zamiast wyłączać całe zabezpieczenie.
- Następnie użyj Validate Fix w raporcie Page Indexing GSC, a jeśli sprawa jest pilna, poproś o ponowne indeksowanie przez URL Inspection.
Kiedy 403 jest w porządku — tych przypadków nie „naprawiaj”
Nie każdy 403 jest błędem. 403 jest poprawny i zamierzony dla witryn stagingowych, paneli administracyjnych, prywatnych sekcji członkowskich oraz treści za paywallem/bramką, których nigdy nie chciałeś indeksować. W audycie Ahrefs lub Screaming Frog 403 na takich stronach nie jest problemem — naprawa jest potrzebna tylko wtedy, gdy przypadkiem blokowana jest strona, która ma być publiczna i indeksowalna. Nie „rozwiązuj” odruchowo każdego 403 zgłoszonego przez audyt; najpierw potwierdź, że daną stronę rzeczywiście chcesz mieć w indeksie.
W szerszym obrazie — różnicy między 4xx i 5xx oraz miejscu 403 wśród tych kodów — przeczytaj mój tekst o kodach statusu HTTP i ich wpływie na SEO oraz powiązane pogłębione teksty o 401 Unauthorized i 404 Not Found w tym klastrze.
Podsumowanie AI
Skrócona wersja wariantu Advanced:
- 403 = „zrozumiano, ale odmówiono”. Według RFC 9110 odmowa nie musi dotyczyć danych uwierzytelniających, a serwer może nawet wysłać 404, jeśli chce ukryć istnienie zabronionego zasobu. To odrębne od 404 (zwykle zasób nie istnieje) i 401 (konkretny challenge uwierzytelniania wymagający nagłówka
WWW-Authenticate) — ponowne uwierzytelnienie nie musi naprawić 403. - Rezultat indeksowania przypomina
noindex, ale mechanizm jest inny. Znaczniknoindexmusi zostać pobrany i odczytany; 403 uniemożliwia Google odczytanie jakiejkolwiek treści. Obie ścieżki kończą się brakiem strony w wynikach wyszukiwania. - 403 dla Googlebota warto zbadać, ale nie jest automatycznie błędem. Najpierw sprawdź, czy strona rzeczywiście ma być publiczna. Jeśli tak, prawdopodobną przyczyną jest reguła, która zadziałała niewłaściwie (WAF, blokada IP, wtyczka bezpieczeństwa) — ale brak wiarygodnych danych o najczęstszej przyczynie oznacza, że traktuj je jako listę kontrolną, a nie ranking.
- 403 nie wpływa na tempo crawlowania całej witryny. Częstotliwość crawlowania pojedynczego znanego URL-a stopniowo maleje, im dłużej zwraca on błąd tego typu, ale nie jest to ograniczanie całej witryny. Nigdy nie używaj 401/403 do ograniczania Googlebota; zamiast tego przez krótki czas użyj 429/503/500 — i nawet to grozi usunięciem z indeksu, jeśli trwa zbyt długo.
- Pułapka robots.txt (odwrotny skutek): 403 na stronie jest twardą blokadą, a 403 na samym robots.txt jest traktowany permisywnie — Google zakłada brak reguł crawlowania.
- Diagnozuj na podstawie dowodów, nie założeń. Sam 403 nie wskazuje źródła — potwierdź je nagłówkami odpowiedzi, logami lub zdarzeniami bezpieczeństwa CDN-u, zanim obwinisz konkretną warstwę. GSC Page Indexing + Test Live URL → curl z user-agentem Googlebota i bez niego → CDN Security Events → weryfikacja bota przez DNS/IP, nie UA → wyłączanie etapami.
- Naprawa: dodaj do allowlisty zweryfikowane boty (DNS/IP albo kategoria „verified bots” CDN-u), a nie surowy ciąg UA. Następnie użyj Validate Fix w GSC.
- Niektóre 403-y są poprawne: staging, panel administracyjny, treść tylko dla członków i paywall — nie „naprawiaj” ich. Najpierw sprawdź intencję.
Oficjalna dokumentacja
Dokumentacja źródłowa dotycząca obsługi 403 i całej rodziny 4xx.
Protokół
- RFC 9110 §15.5.4: 403 Forbidden — podstawowa specyfikacja HTTP: odmowa nie musi dotyczyć danych uwierzytelniających, a źródło może wysłać 404, aby ukryć zabroniony zasób.
- Jak kody statusu HTTP wpływają na crawlery Google — definitywne wyjaśnienie, że URL-e 4xx (poza 429) są usuwane z indeksu i nie wpływają na tempo crawlowania.
- Raport indeksowania stron — pomoc Search Console — status “Blocked due to access forbidden (403)” (tłumaczenie) „Zablokowano z powodu odmowy dostępu (403)” i wyjaśnienie, że Googlebot nigdy nie podaje danych uwierzytelniających.
- Nie używaj błędów dostępu do ograniczania tempa — Gary Illyes, luty 2023, o tym, dlaczego kody 4xx są niewłaściwym narzędziem do ograniczania crawlowania.
- Ograniczanie tempa crawlowania Google — właściwe podejście: przez krótki czas zwracać 500/503/429, a nie 403/404.
- Jak Google interpretuje specyfikację robots.txt — niuans, że 4xx na robots.txt jest traktowany jak brak ograniczeń.
- Weryfikowanie Googlebota — odwrotny DNS i opublikowane zakresy IP do poprawnego dodawania botów do allowlisty.
Bing / Microsoft
- List of crawl error alerts — Bing Webmaster Tools — kategorie alertów dotyczących błędów crawlowania Binga.
CDN/WAF
- Fake bot detection blocking legitimate requests — własna dokumentacja Cloudflare o tym, jak zarządzane reguły fałszywych botów mogą powodować blokady false-positive; przydatna do potwierdzenia, a nie założenia, że to WAF wystawia kod.
Ogólne źródło internetowe
- MDN — 403 Forbidden — autorytatywna definicja bazowa i jasne rozróżnienie 401 i 403.
Cytaty ze źródeł
Oświadczenia zapisane w źródłach. Każdy link jest głębokim linkiem prowadzącym do cytowanego fragmentu na stronie źródłowej.
Google — obsługa 4xx/403
- “Google doesn’t use the content from URLs that return 4xx status codes… Google doesn’t index URLs that return a 4xx status code, and URLs that are already indexed and return a 4xx status code are removed from the index.” (tłumaczenie) „Google nie korzysta z treści URL-i zwracających kody statusu 4xx… Google nie indeksuje URL-i zwracających kod 4xx, a URL-e już zindeksowane i zwracające kod 4xx są usuwane z indeksu.” — dokumentacja Google Search Central. Przejdź do cytatu
- “All 4xx errors, except 429, are treated the same: Google crawlers inform the next processing system that the content doesn’t exist.” (tłumaczenie) „Wszystkie błędy 4xx, poza 429, są traktowane tak samo: crawlery Google informują następny system przetwarzania, że treść nie istnieje.” Przejdź do cytatu
- “Don’t use 401 and 403 status codes for limiting the crawl rate. The 4xx status codes, except 429, have no effect on crawl rate.” (tłumaczenie) „Kodów 401 i 403 nie należy używać do sterowania szybkością pobierania. Odpowiedzi 4xx nie wpływają na tempo pracy robota, z wyjątkiem 429.” Przejdź do cytatu (Polski gloss: cytaty potwierdzają, że Google nie używa treści z URL-i 4xx, usuwa już zindeksowane URL-e 4xx i nie powinno się używać kodów 401/403 do ograniczania tempa crawlowania.)
Google — „Googlebot nigdy się nie uwierzytelnia”
- “HTTP 403 means that the user agent provided credentials, but was not granted access. However, Googlebot never provides credentials, so your server is returning this error incorrectly. The page will not be indexed.” (tłumaczenie) „HTTP 403 wskazuje tu, że klient podał dane uwierzytelniające, lecz nie otrzymał dostępu. Ponieważ Googlebot ich nie przesyła, taka odpowiedź serwera jest błędna, a strona nie trafi do indeksu.” — Search Console Help, “Blocked due to access forbidden (403).” Przejdź do cytatu (Polski gloss: cytat wyjaśnia, że Googlebot nie podaje danych uwierzytelniających, więc 403 opisany jako odrzucone dane logowania oznacza nieprawidłową odpowiedź dla strony, która ma być indeksowana.)
Gary Illyes, Google — nie ograniczaj tempa przez 4xx
- “All 4xx HTTP status codes (again, except 429) will cause your content to be removed from Google Search. What’s worse, if you also serve your robots.txt file with a 4xx HTTP status code, it will be treated as if it didn’t exist.” (tłumaczenie) „Wszystkie kody statusu HTTP 4xx (ponownie poza 429) spowodują usunięcie treści z wyszukiwarki Google. Co gorsza, jeśli plik robots.txt także zwraca kod 4xx, zostanie potraktowany tak, jakby nie istniał.” — Google Search Central Blog, Feb 2023. Przejdź do cytatu
- “Return a 500, 503, or 429 HTTP status code to Googlebot when it’s crawling too fast.” (tłumaczenie) „Gdy Googlebot crawluje zbyt szybko, zwróć mu kod statusu HTTP 500, 503 albo 429.” Przejdź do cytatu (Polski gloss: wypowiedzi wskazują, że 4xx poza 429 usuwają treści z Google, a krótkotrwałe 500, 503 lub 429 są właściwymi kodami przy zbyt szybkim crawlowaniu.)
Google — odwrócenie znaczenia 403 na robots.txt
- “Google’s crawlers treat all 4xx errors, except 429, as if a valid robots.txt file didn’t exist. This means that Google assumes that there are no crawl restrictions.” (tłumaczenie) „Crawlery Google traktują wszystkie błędy 4xx, poza 429, jak brak prawidłowego pliku robots.txt. Oznacza to, że Google zakłada brak ograniczeń crawlowania.” — Jak Google interpretuje specyfikację robots.txt. Przejdź do cytatu (Polski gloss: cytat potwierdza, że 4xx na robots.txt poza 429 jest traktowany jak brak prawidłowego pliku, więc Google zakłada brak ograniczeń crawlowania.)
MDN — definicja ogólna i rozróżnienie 401/403
- “The HTTP 403 Forbidden client error response status code indicates that the server understood the request but refused to process it. This status is similar to 401, except that for 403 Forbidden responses, authenticating or re-authenticating makes no difference.” (tłumaczenie) „Kod odpowiedzi błędu klienta HTTP 403 Forbidden oznacza, że serwer zrozumiał żądanie, ale odmówił jego przetworzenia. Status ten przypomina 401, z tą różnicą, że w przypadku odpowiedzi 403 Forbidden uwierzytelnienie lub ponowne uwierzytelnienie niczego nie zmienia.” — MDN Web Docs. Przejdź do cytatu (Polski gloss: definicja MDN mówi, że serwer zrozumiał żądanie, ale odmówił jego przetworzenia; w odróżnieniu od 401 ponowne uwierzytelnienie niczego nie zmienia.)
Barry Schwartz, Search Engine Roundtable — dotkliwość 403 i 503 Relacja przekazująca wypowiedź Google, a nie strona pierwszorzędna Google; sam URL źródłowy zwraca 403 automatycznym pobierającym (ironia tematyczna) — przed uznaniem treści za ostateczną potwierdź ją w przeglądarce.
- O ostrzeżeniu Google: witryny “lost load[s] of their pages from our index because they were serving them with a 403 status code instead of a 503.” (tłumaczenie) „straciły mnóstwo stron z naszego indeksu, ponieważ serwowały je z kodem statusu 403 zamiast 503.” Przeczytaj relację (Polski gloss: cytat ostrzega, że strony mogą stracić wiele adresów z indeksu, gdy serwują 403 zamiast tymczasowego 503.)
Diagnozowanie 403 — drzewo decyzji
Zacznij od tego, co rzeczywiście otrzymuje Googlebot, a potem zawężaj diagnozę według warstwy.
P1. Czy 403 dotyczy strony, którą chcesz indeksować?
- Nie (staging, panel administracyjny, tylko dla członków, paywall) → prawdopodobnie jest poprawny. Pozostaw go. Zatrzymaj się tutaj.
- Tak → przejdź dalej.
P2. Czy 403 zwraca strona, czy robots.txt?
- robots.txt zwraca 403 → inny problem: Google ignoruje teraz wszystkie Twoje reguły crawlowania (traktuje robots.txt jak nieobecny). Napraw robots.txt, aby zwracał
200; 403 strony może być osobnym problemem. - Strona zwraca 403 → przejdź dalej.
P3. Czy curl odtwarza problem — i czy zależy on od user-agenta?
curl -I https://example.com/page/
curl -I -A "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" https://example.com/page/- UA przeglądarki = 200, UA Googlebota = 403 → reguła user-agenta blokuje bota (WAF, konfiguracja serwera lub wtyczka). Przejdź do P4.
- Oba = 403 → szersza blokada (zakres IP, uprawnienia katalogu,
.htaccessDeny). Sprawdź konfigurację serwera i uprawnienia plików. - Oba = 200, ale GSC nadal pokazuje 403 → blokada prawdopodobnie jest na brzegu/CDN-ie i zależy od IP albo statusu zweryfikowanego bota. Przejdź do P4 i sprawdź Security Events CDN-u.
P4. Czy korzystasz z CDN-u/WAF-u (np. Cloudflare)?
- Tak → sprawdź Security Events pod kątem wyzwania lub zablokowania crawlera. Podejrzewaj Bot Fight Mode / Super Bot Fight Mode, zarządzane reguły WAF-u albo niestandardową regułę firewalla. Dopuść zweryfikowane boty wyszukiwarek (nie surowe zezwolenie UA).
- Nie → sprawdź blokady IP/UA na poziomie serwera, następnie wtyczki bezpieczeństwa (np. Wordfence), a potem
.htaccessi uprawnienia plików.
P5. Reguła naprawiona?
- Dodaj do allowlisty według zweryfikowanego bota/DNS/zakresu IP, nigdy tylko według ciągu UA → użyj Validate Fix w GSC Page Indexing → w pilnych przypadkach poproś o ponowne indeksowanie przez URL Inspection.
Antywzorce — błędy 403, które widzę bez przerwy
Używanie 403 (albo 404) do spowolnienia Googlebota. Mit mówi, że zwrócenie 403 ogranicza crawlowanie. Nie ogranicza — 4xx (poza 429) nie wpływa na tempo crawlowania, a zamiast tego usuwa z indeksu strony, którym zwróciłeś 403. Jeśli musisz spowolnić crawling, przez krótki czas (od kilku godzin do jednego–dwóch dni) zwracaj 429, 503 lub 500 albo użyj raportowania tempa crawlowania w Search Console. 403 nigdy nie jest narzędziem kontroli crawlowania, nawet tymczasowo.
Traktowanie 403 dokładnie jak 404 w audycie. Oba kody z czasem usuwają URL z indeksu, więc łatwo wrzucić je do jednego koszyka. 404 zwykle oznacza „zniknęło”, a 403 „aktywnie odmówiono dostępu” — czasem przez naprawialną błędną konfigurację, a czasem przez zamierzoną blokadę. Połączenie ich maskuje właściwy problem. Diagnozuj przyczynę i intencję, a nie tylko rezultat.
Zakładanie, że Googlebot „zrobił coś podejrzanego”, aby zasłużyć na blokadę. Googlebot nigdy nie wysyła danych uwierzytelniających, więc 403 opisany jako „błędne dane” właściwie go nie dotyczy. Nie znaczy to jednak, że każda blokada jest błędem — najpierw potwierdź, że strona miała być publiczna. Jeśli tak, nie tłumacz blokady tym, że wywołał ją Googlebot; znajdź regułę, która zadziałała (WAF, blokada IP, wtyczka).
Dodawanie do allowlisty wyłącznie na podstawie user-agenta. Ciągi UA można banalnie podrobić, więc reguła allow if UA contains "Googlebot" zaprasza każdego scrapera udającego Google do przejścia przez zabezpieczenia. Weryfikuj przez odwrotny i zgodny DNS albo opublikowane zakresy IP, ewentualnie użyj kategorii verified-bots CDN-u.
Mylenie 403 na robots.txt z 403 na stronach. Skutki są przeciwne. 403 na stronie jest twardą blokadą i usuwa ją z indeksu. 403 na robots.txt powoduje, że Google zakłada brak reguł crawlowania — może więc crawlowć ścieżki, których chciałeś zabronić. Zanim coś naprawisz, ustal, który przypadek rzeczywiście widzisz.
„Naprawianie” zamierzonych 403-ów. Witryny stagingowe, panele administracyjne, obszary tylko dla członków i treści za paywallem powinny zwracać crawlerom 403. Odruchowe rozwiązywanie każdego 403 w audycie może ujawnić rzeczy, których nigdy nie chciałeś indeksować. Najpierw potwierdź, że strona ma być publiczna.
Ramy intencji, zakresu i warstwy wystawiającej odpowiedź
Audyt 403 przyspiesza, gdy odpowiem po kolei na trzy pytania:
- Intencja: czy zasób powinien być publiczny? Pozostaw zamierzoną blokadę prywatnego obszaru. 403 na stronie indeksowalnej traktuj jak incydent.
- Zakres: czy awaria dotyczy jednego URL-a, katalogu, user-agenta, obszaru geograficznego czy każdego żądania? Granica problemu zwykle szybciej wskazuje odpowiedzialną regułę niż losowe zmienianie wtyczek.
- Warstwa wystawiająca: porównaj zdarzenie CDN-u/WAF-u, log dostępu źródła, log aplikacji i nagłówki odpowiedzi. Zmień pierwszą warstwę, która rzeczywiście emituje 403, a nie każdą warstwę, która mogłaby go wystawić.
Po naprawie osobno zweryfikuj dostęp anonimowy i dostęp zweryfikowanego crawlera. Deklarowany user-agent Googlebot jest przydatny do odtworzenia reguły UA, ale nie dowodzi tożsamości crawlera.
Prompt: odizoluj 403 według warstwy
Diagnose this HTTP 403 using only the evidence I paste. Classify the likely issuing
layer as CDN/WAF, web server, application/security plugin, filesystem permissions,
or intentional access control. Compare generic and claimed-bot responses, identify
which observation supports each conclusion, and give the smallest safe change plus
an anonymous curl test and Search Console validation. Do not recommend disabling all
security or trusting a user-agent string as identity.
[PASTE SANITIZED HEADERS, CURL OUTPUT, SECURITY EVENT, AND LOG LINES]Prompt: przejrzyj wyjątek WAF
Review this WAF rule intended to stop 403s for legitimate search crawlers. Check its
scope, whether crawler identity is verified, what non-crawler traffic it could admit,
and whether robots.txt behaves differently from page URLs. Return a least-privilege
rewrite, test cases, and rollback conditions. Do not invent provider syntax.
[PASTE RULE AND PROVIDER] Narzędzia do diagnozowania odpowiedzi 403
- Bulk HTTP Status Code Checker: sprawdź, czy blokada dotyczy pojedynczego URL-a, czy wzorca, bez przenoszenia sesji logowania.
- HTTP Header Checker: przeanalizuj odciski CDN-u, identyfikatory żądań i nagłówki bezpieczeństwa pomagające ustalić warstwę wystawiającą odpowiedź.
- Googlebot Verifier: sprawdź dowody IP przed dopuszczeniem crawlera; sam user-agent nigdy nie jest dowodem.
- Page Indexing i URL Inspection w Search Console: zobacz zgłoszony zbiór URL-i, wykonaj test bieżącej odpowiedzi i zweryfikuj ją po naprawie.
- Zdarzenia bezpieczeństwa CDN-u/WAF-u oraz logi źródła: jeśli brzeg rejestruje blokadę, a źródło nie rejestruje żądania, naprawa należy do warstwy brzegowej.
Sprawdź się: 403 Forbidden
Pięć krótkich pytań o znaczenie 403 i sposób obsługi tego błędu. Wybierz odpowiedź na każde, a potem sprawdź wynik.
Zasoby warte uwagi
Moje powiązane teksty
- Kody statusu HTTP i ich wpływ na SEO — pełne zestawienie 4xx/5xx; miejsce 403 wśród kodów i mechanizm, przez który 4xx usuwają strony z indeksu.
- Przewodnik po technicznym SEO dla początkujących — miejsce problemów z dostępem do crawlowania/indeksowania, takich jak 403, w szerszym obrazie.
- Robots.txt i SEO: wszystko, co trzeba wiedzieć — niuans 403 na robots.txt i działanie kontroli crawlowania.
Moje wystąpienia
- Jak działa wyszukiwanie (SlideShare) — moje omówienie crawlowania → renderowania → indeksowania → serwowania; 403 jest awarią już na pierwszej bramce. (Stałe zastrzeżenie: “This is my understanding of systems… not going to be 100% complete or accurate.” (tłumaczenie) „Tak rozumiem te systemy… nie będzie to w 100% kompletne ani dokładne.”)
Z branży
- Nie używaj błędów dostępu do ograniczania tempa (Google Search Central Blog) — Gary Illyes o tym, dlaczego kody 4xx są niewłaściwym narzędziem do ograniczania crawlowania.
- Ograniczanie tempa crawlowania Google (Google Search Central) — właściwe podejście z kodami 500/503/429 dla porównania.
- Google ostrzega przed niewłaściwym użyciem kodów dostępu (Search Engine Roundtable) — anegdota o dotkliwości 403 kontra 503 (zweryfikuj w przeglądarce; strona zwraca botom 403).
- Google: nie używaj odpowiedzi błędów do ograniczania tempa Googlebota (Search Engine Journal) — omówienie wytycznych z 2023 roku.
- Jak naprawić blokadę dostępu w Google Search Console (SEOTesting) — solidna struktura przyczyn i napraw, w tym pytanie, czy trzeba naprawiać każdy 403.
- Jak naprawić błąd blokady dostępu (Rank Math) — konkretne wartości
chmodw WordPressie i proces Health Check. - Kody statusu HTTP: dlaczego moja witryna się nie crawluje? (Screaming Frog) — diagnoza po stronie crawlera (zmiana UA, renderowanie JS, allowlista IP/UA).
Dziennik zmian
Zaktualizowano 9 sie 2026.
Podsumowanie redakcyjne i zapisane szczegóły zmian.Szczegóły zmian
-
Szczegółowe uwagi dotyczące zmian są obecnie dostępne po angielsku.
Pełne porównanie jest niedostępne — dla tej wersji nie zarchiwizowano wcześniejszej migawki.
Zaktualizowano 6 sie 2026.
Podsumowanie redakcyjne i zapisane szczegóły zmian.Szczegóły zmian
-
Szczegółowe uwagi dotyczące zmian są obecnie dostępne po angielsku.
Pełne porównanie jest niedostępne — dla tej wersji nie zarchiwizowano wcześniejszej migawki.
Zaktualizowano 17 lip 2026.
Podsumowanie redakcyjne i zapisane szczegóły zmian.Szczegóły zmian
-
Szczegółowe uwagi dotyczące zmian są obecnie dostępne po angielsku.
Pełne porównanie jest niedostępne — dla tej wersji nie zarchiwizowano wcześniejszej migawki.
Try it live
This is a real endpoint on this site — not a simulation.
Hit it from the button, open it in a new tab, or
curl -i it from your terminal, and the server answers with the actual status code this article is about.