3 listopada 2026 roku Barry Schwartz opisał w Search Engine Roundtable odpowiedź Johna Muellera na pytanie z Reddita: co zrobić, żeby Google nie renderował pop-upu wstawianego na stronę skryptem. Mueller podał dwa sposoby i oba opierają się na robots.txt. Można zablokować zewnętrzną domenę, z której przychodzi okno, albo plik JavaScript, który je ładuje. Ta wymiana dobrze pokazuje, że robots.txt wpływa też na to, z jakich plików Googlebot składa wyrenderowaną wersję strony.

Pytanie i odpowiedź Muellera

Autor pytania prowadzi serwis, który ze względów prawnych musi pokazywać okno weryfikacji wieku. Okno działa na osobnej domenie i trafia na stronę przez API. Chciał wiedzieć, czy Disallow w pliku robots.txt tej drugiej domeny sprawi, że Google nie wyrenderuje pop-upu.

Mueller odpowiedział: „That would generally work”, czyli że zasadniczo to zadziała. Dodał, że jeśli okno ładuje konkretny plik JS, można zablokować w robots.txt właśnie ten plik. Zastrzegł przy tym: „if you only have one JS file that does a bunch of things, I wouldn’t do that”. Jeśli jeden plik odpowiada za wiele rzeczy naraz, on by go nie blokował.

Dlaczego to działa

Według dokumentacji Google przetwarzanie strony z JavaScriptem ma trzy etapy: crawling, renderowanie i indeksowanie. Strony z kodem 200 trafiają do kolejki renderowania. Kiedy Google ma na to zasoby, headless Chromium wykonuje JavaScript, a do indeksowania Google używa wyrenderowanego HTML-a. Czym różni się tu renderowanie po stronie serwera od renderowania w przeglądarce, opisuję w tekście o technologiach web a SEO.

Zanim Googlebot pobierze adres z kolejki, sprawdza robots.txt. Jeśli adres jest zablokowany, Googlebot w ogóle nie wysyła do niego zapytania. Dokumentacja mówi też wprost, że Google nie wyrenderuje JavaScriptu z zablokowanych plików ani na zablokowanych stronach. Obie metody Muellera wynikają z tej zasady.

Sposób 1: blokada w robots.txt domeny, z której pochodzi okno

Wyobraź sobie, że osadzasz treść z innej domeny, przez iframe albo przez wywołanie jej skryptu, a ta domena w swoim robots.txt zabrania crawlowania. Wtedy roboty, które przestrzegają robots.txt (takie jak Googlebot), tej treści nie pobiorą i nie użyją jej przy renderowaniu. Mueller zauważył, że tak działa wiele usług reklamowych.

Doprecyzował też, jak to wygląda od strony Googlebota. Takich adresów nie crawluje jak osobnych stron, ale próbuje je pobrać w trakcie renderowania. Jeśli robots.txt na to nie pozwala, Googlebot treści nie pobierze i nie może jej wykorzystać.

Haczyk jest taki, że trzeba mieć wpływ na robots.txt tamtej domeny. Przy własnym serwisie weryfikacji to jeden wpis. Usługi zewnętrznej zwykle nie przekonfigurujesz.

Sposób 2: blokada skryptu we własnym robots.txt

Jeśli okno ładuje osobny plik, na przykład load-verification-popup.js (to przykład Muellera), możesz go zablokować w robots.txt swojej witryny. Skrypt nie załaduje się wtedy podczas renderowania. Mueller przyznał, że z jego doświadczenia to rzadziej spotykane rozwiązanie. Jeśli jednak robots.txt domeny z pop-upem jest poza Twoim zasięgiem, a chcesz, żeby okno nie było widoczne ani używane przy renderowaniu, zostaje tylko ta droga.

Wpis mógłby wyglądać tak (ścieżka jest przykładowa):

User-agent: *
Disallow: /assets/js/load-verification-popup.js

User-agent: * obejmuje wszystkie roboty. Jeśli chcesz zablokować plik tylko Googlebotowi, wpisz User-agent: Googlebot.

Co Google pisze o bramkach wieku

Dokumentacja Google o interstitialach i oknach dialogowych ma osobny fragment o oknach wymaganych prawem, które Google nazywa mandatory interstitials. Jako przykład podaje kasyno, które musi pokazać bramkę wieku (age gate). Takie okna są wyłączone z zaleceń dotyczących uciążliwych interstitiali. Google radzi jednak, żeby:

  • okno nakładało się na treść, zamiast ją zastępować, bo wtedy Google może zaindeksować przynajmniej część strony,
  • nie przekierowywać zapytań na osobną stronę zgody. Gdy wszystkie adresy prowadzą na jedną stronę, z wyników znikają wszystkie poza nią, bo Googlebot może pobrać tylko ją.

Jest tam też zalecenie dla treści dla dorosłych schowanych za bramką wieku. Google proponuje, żeby Googlebot mógł crawlować treść bez wywoływania bramki: zweryfikować, że zapytanie naprawdę wysyła Googlebot, i podać mu stronę bez okna. To trzecia droga do tego samego celu i jedyna z trzech, którą Google opisuje w swojej dokumentacji.

Zanim dodasz Disallow

Mueller postawił jeden warunek: strony muszą się normalnie ładować, kiedy zablokowane adresy nie zostaną pobrane. Dodał, że przy oknie weryfikacji zwykle nie ma z tym kłopotu. Sprawdź to jednak na własnej stronie, zanim wdrożysz blokadę.

Google pozwala blokować w robots.txt pliki zasobów, takie jak mniej ważne obrazy, skrypty czy style, jeśli strona bez nich niewiele traci. Jeśli jednak bez nich robotowi trudniej zrozumieć stronę, nie należy ich blokować, bo Google gorzej przeanalizuje strony, które od nich zależą. Dlatego:

  1. Uruchom test wersji opublikowanej w narzędziu do sprawdzania adresów URL w Search Console. Zobaczysz zrzut ekranu strony widzianej przez Google i listę załadowanych zasobów. Resztę narzędzia opisuje przewodnik po Google Search Console.
  2. Upewnij się, że treść główna, menu i linki nie zależą od skryptu, który blokujesz.
  3. Zablokuj ten jeden adres w przeglądarce (w Chrome DevTools służy do tego blokowanie żądań w panelu Network) i zobacz, co zostaje ze strony.

Ogólną konfigurację pliku opisuję w przewodniku po robots.txt, a o tym, jak Google czyta jego reguły, w tekście Co można wpisać w robots.txt.

Czego ta metoda nie załatwia

Indeks zostaje bez zmian. Google pisze wprost, że robots.txt nie służy do trzymania stron z dala od wyników wyszukiwania. Zablokowany adres może się w nich pojawić, jeśli prowadzą do niego linki z innych miejsc, tyle że bez opisu. Do wykluczenia strony z wyników służy noindex w meta tagu lub nagłówku HTTP, hasło albo usunięcie strony. Metoda Muellera dotyczy węższej sprawy: tego, co Google zobaczy po wyrenderowaniu konkretnej strony.

Robots.txt działa tylko na posłuszne roboty. Googlebot się do niego stosuje, ale robots.txt niczego nie wymusza i inne crawlery mogą go zignorować. Użytkownicy dalej widzą okno.

Ocena pop-upu to osobna sprawa. Mueller mówił o tym, jak sprawić, żeby Google nie renderował okna. Czy pop-up szkodzi stronie w wyszukiwarce, w ogóle nie oceniał. To osobny temat, który dla okien wymaganych prawem opisuje wspomniana dokumentacja o interstitialach.

Okno potrzebuje własnego adresu. Robots.txt blokuje adresy. Jeśli kod okna jest częścią HTML-a strony albo siedzi w tym samym pliku JS co reszta funkcji, nie ma osobnego adresu, który można by zablokować bez skutków ubocznych.

Podsumowanie

Przy audycie robots.txt trzeba patrzeć także na zasoby, a nie tylko na strony, bo od tego pliku zależy, czego Googlebot użyje przy renderowaniu. Pop-up ładowany z innej domeny albo z wydzielonego pliku JS da się w ten sposób ukryć przed Google, jeśli strona bez niego działa. Dla bramek wieku Google opisuje w dokumentacji jeszcze jedną drogę: weryfikację Googlebota i podanie mu treści bez okna. Ta sama zasada działa w drugą stronę: przypadkowo zablokowany skrypt albo arkusz stylów, od którego zależy treść, utrudnia Google zrozumienie strony. Zanim więc dodasz Disallow, sprawdź wyrenderowaną stronę w Search Console.

Często zadawane pytania

Czy robots.txt może ukryć pop-up przed Google?

Tak, jeśli okno ładuje się z innej domeny albo z osobnego pliku JavaScript. John Mueller podał dwa sposoby: zablokować crawlowanie w robots.txt domeny, z której pochodzi okno, albo zablokować plik skryptu w robots.txt własnej witryny. Googlebot nie pobierze wtedy tego zasobu podczas renderowania.

Czy zablokowanie skryptu w robots.txt usuwa stronę z indeksu?

Nie. Według Google robots.txt nie służy do wykluczania stron z wyników wyszukiwania. Do tego służy noindex (meta tag lub nagłówek), hasło albo usunięcie strony. Blokada skryptu zmienia tylko to, co Google widzi podczas renderowania.

Kiedy nie blokować skryptu z pop-upem?

Kiedy jeden plik JavaScript odpowiada za wiele funkcji. Mueller powiedział, że w takiej sytuacji by go nie blokował. Zablokowanie takiego pliku może zepsuć renderowanie treści głównej, menu albo linków.

Co Google radzi w przypadku bramki wieku?

Okna wymagane prawem, takie jak bramka wieku, są wyłączone z zaleceń Google dotyczących uciążliwych interstitiali. Google radzi, żeby okno nakładało się na treść i nie przekierowywało na osobną stronę. Dla treści dla dorosłych za bramką wieku zaleca, żeby Googlebot mógł crawlować treść bez bramki, po zweryfikowaniu, że zapytanie wysyła Googlebot.

Jak sprawdzić, czy Google widzi pop-up?

Uruchom test wersji opublikowanej w narzędziu do sprawdzania adresów URL w Google Search Console. Pokaże zrzut ekranu strony widzianej przez Google i listę załadowanych zasobów. Ogólną konfigurację pliku opisuje przewodnik po robots.txt.

Źródła

  1. Google On How To Block Popups Using Robot.txt In Search Search Engine Roundtable · seroundtable.com
  2. Introduction to robots.txt Google Search Central · developers.google.com
  3. Understand JavaScript SEO basics Google Search Central · developers.google.com
  4. Avoid intrusive interstitials and dialogs Google Search Central · developers.google.com
  5. Narzędzie do sprawdzania adresów URL Pomoc Search Console · support.google.com