Dokumentacja

Napraw robots.txt

Napraw robots.txt

robots.txt to plik pod https://example.com/robots.txt, który mówi robotom, które części strony mogą odwiedzać. Dwie linie wystarczą, żeby zamknąć całą stronę:

User-agent: *
Disallow: /

Google przestaje wtedy odwiedzać strony. Powoli tracą opisy i pozycje, a nowe podstrony w ogóle nie trafiają do wyszukiwarki. Tak jak zapomniany noindex, zwykle pochodzi to ze strony testowej, której robots.txt trafił na produkcję razem z nią. Lista kontrolna strony oznacza to jako Popraw i wysyła ostrzeżenie, gdy robots.txt zaczyna blokować całą stronę.

Czego szuka lista kontrolna

robots.txt Wynik
Disallow: / pod User-agent: * i brak grupy Googlebot Popraw: cała strona jest zamknięta
Disallow: / pod User-agent: Googlebot Popraw: zamknięta dla Google
Disallow: / i Allow: / w tej samej grupie OK: katalog główny jest znów otwarty
Disallow: bez niczego dalej OK: to pozwala na wszystko
Disallow: /wp-admin/, Disallow: /cart i inne ścieżki OK: zamknięte są tylko te ścieżki
brak robots.txt (404) OK: roboty mogą odwiedzać wszystko

Google stosuje najbardziej szczegółową grupę: gdy istnieje grupa User-agent: Googlebot, ignoruje grupę *. Reguły dla innych botów (roboty AI, narzędzia SEO) nie wpływają na tę pozycję.

Sprawdź sam

Zamiast example.com wpisz swoją stronę:

curl -sL https://example.com/robots.txt

Spójrz na grupę dla User-agent: * (i Googlebot, jeśli istnieje). Jeśli żadna nie ma samodzielnego Disallow: /, gotowe. Jeśli polecenie wypisze stronę HTML zamiast kilku linii tekstu, strona nie ma prawdziwego robots.txt, co też jest w porządku.

Jak to naprawić

Bezpieczny robots.txt dla większości stron jest krótki:

User-agent: *
Disallow:

Sitemap: https://example.com/sitemap.xml

Zostaw linie, które zamykają konkretne prywatne ścieżki, i usuń tylko Disallow: /. Poniżej znajdź, skąd pochodzi Twój robots.txt.

WordPress

WordPress domyślnie nie ma pliku robots.txt: generuje go, gdy ktoś o niego poprosi. Jeśli w folderze głównym strony istnieje prawdziwy plik robots.txt, ma on pierwszeństwo i wersji WordPressa nikt nie widzi.

  1. Otwórz Settings → Reading i upewnij się, że Search engine visibility (Discourage search engines from indexing this site) jest odznaczone. Na działającej stronie nie powinno być nigdy zaznaczone.
  2. Yoast SEO: Yoast SEO → Tools → File editor pokazuje robots.txt i pozwala go edytować (jeśli serwer pozwala Yoastowi zapisać plik).
  3. Rank Math: Rank Math SEO → General Settings → Edit robots.txt (widoczne w trybie Advanced). Jeśli istnieje fizyczny plik, Rank Math o tym informuje i trzeba edytować sam plik.
  4. Jeśli jest fizyczny plik i żadna wtyczka go nie edytuje, zmień go przez FTP lub menedżer plików hostingu (zobacz zakładkę cPanel).

Potem wyczyść pamięć podręczną strony: niektóre wtyczki cache i hostingi zapisują też robots.txt.

cPanel

  1. Otwórz Files → File Manager i przejdź do folderu głównego strony (zwykle public_html).
  2. Kliknij prawym przyciskiem robots.txt i wybierz Edit.
  3. Usuń linię Disallow: / (albo zamień ją na Disallow:) i kliknij Save Changes.

Plesk (Files) i DirectAdmin (File Manager) działają tak samo. Jeśli w folderze nie ma robots.txt, plik generuje CMS: zobacz zakładkę WordPress.

nginx

Zwykle robots.txt to zwykły plik w katalogu głównym strony (dyrektywa root bloku server). Edytuj go tam. Niektóre konfiguracje zwracają go bezpośrednio z nginx, więc poszukaj też tego:

sudo grep -rn 'robots.txt' /etc/nginx/

Taki blok zwraca zamknięty robots.txt bez względu na to, co jest w pliku:

location = /robots.txt {
    return 200 "User-agent: *\nDisallow: /\n";
}

Usuń go (albo zmień tekst), potem sprawdź i przeładuj:

sudo nginx -t && sudo systemctl reload nginx

Apache i LiteSpeed

Edytuj plik robots.txt w DocumentRoot strony. Jeśli wygląda dobrze, a serwer zwraca coś innego, poszukaj w konfiguracji przepisania (rewrite) lub aliasu:

sudo grep -rn -i 'robots' /etc/apache2/ /var/www/

(Na Rocky, Alma i CentOS /etc/httpd/ zamiast /etc/apache2/.) Jeśli zmieniłeś wirtualny host, zastosuj zmianę:

sudo apachectl configtest && sudo systemctl reload apache2

Node.js i Next.js

W Next.js App Router robots.txt to statyczny plik app/robots.txt albo jest generowany przez app/robots.js:

export default function robots() {
    return {
        rules: { userAgent: '*', allow: '/' },
        sitemap: 'https://example.com/sitemap.xml',
    };
}

Poszukaj tam disallow: '/', często za warunkiem na środowisko. W innych aplikacjach Node robots.txt to zwykle plik w public/.

Laravel

Nowy projekt Laravel ma public/robots.txt z otwartą regułą. Edytuj plik tam. Jeśli zamiast niego robots.txt obsługuje trasa (poszukaj robots w routes/web.php), sprawdź, co zwraca na produkcji, i czy w .env na serwerze produkcyjnym jest APP_ENV=production.

Shopify

Shopify sam generuje rozsądny robots.txt. Zmienia się tylko wtedy, gdy motyw ma szablon robots.txt.liquid: Online Store → Themes → … → Edit code → Templates. Jeśli istnieje i dodaje Disallow: /, usuń tę regułę albo usuń szablon, żeby wrócić do domyślnej wersji Shopify.

Wix

Wix sam generuje robots.txt. Jeśli ktoś go edytował, otwórz w panelu ustawienia SEO, przejdź do Robots.txt Editor i usuń regułę Disallow: / albo przywróć plik domyślny.

Webflow

Otwórz Site settings → SEO i w polu robots.txt usuń Disallow: /. Zapisz i opublikuj stronę (Publish): zmiana trafia na produkcję dopiero przy kolejnej publikacji.

Squarespace

Squarespace sam generuje robots.txt i nie da się go edytować. Jego domyślna wersja nie blokuje całej strony. Jeśli lista kontrolna mimo to to zgłasza, sprawdź, czy strona jest publiczna (nie prywatna ani chroniona hasłem).

robots.txt nie służy do ukrywania stron

Disallow zatrzymuje odwiedzanie, nie indeksowanie: zablokowana strona, do której prowadzą linki z innych miejsc, może i tak pojawić się w Google, tylko bez opisu. Żeby strona nie trafiła do wyników, pozwól ją odwiedzać i dodaj noindex; żeby środowisko testowe było prywatne, użyj hasła. Nie blokuj strony w robots.txt i jednocześnie nie dodawaj noindex: Google nie odczyta noindex na stronie, której nie może odwiedzić.

Potwierdź poprawkę

Uruchom ponownie polecenie curl z sekcji Sprawdź sam, potem otwórz cel w PulseKeeper i kliknij Sprawdź teraz na zakładce Lista kontrolna. Pozycja zmieni się na OK w ciągu kilku minut, a nie dopiero przy kolejnym codziennym sprawdzeniu. W Google Search Console Settings → robots.txt pokazuje wersję, którą Google ostatnio pobrał, i pozwala poprosić o ponowne pobranie.