Strony firmowe, landing page i serwisy w WordPress oraz Next.js — projektowane pod konwersję i widoczność w Google.
Tworzenie stron WWWProjektowanie UX/UIStrony dla firmLanding pageRedesign strony
Brak robots.txt na FTP nie oznacza braku odpowiedzi pod tym adresem. Sprawdź, co generuje WordPress, kiedy pierwszeństwo ma plik na serwerze i dlaczego Disallow nie zastępuje noindex. Z poleceniami, kontrolą HTTP i procedurą wycofania zmian.
Robots.txt dla strony https://example.com znajduje się pod https://example.com/robots.txt. W WordPress odpowiedź może pochodzić z istniejącego pliku, z kodu aplikacji albo z konfiguracji hostingu. Najpierw ustal jej rzeczywiste źródło. Dopiero potem zmień reguły i sprawdź rezultat przez HTTP. Do wyłączenia publicznej strony HTML z indeksu służy noindex, a do ochrony prywatnych danych — kontrola dostępu. To trzy różne zadania.
| Masz dostęp do… | Pierwszy krok | Gdzie przejść dalej |
|---|---|---|
| Tylko panelu WordPress | Otwórz /robots.txt w przeglądarce i zapisz treść. W Ustawienia → Czytanie odczytaj widoczność; niczego jeszcze nie przełączaj. | Jeśli zainstalowane narzędzie SEO ma edytor reguł, sprawdź jego dokumentację. Brak edytora → poproś hosting o ustalenie źródła odpowiedzi. |
| Menedżera plików hostingu lub SFTP | Ustal katalog publiczny właściwej domeny. Sprawdź, czy fizyczny robots.txt istnieje; pobierz jego kopię. | Plik istnieje → ścieżka fizyczna w kroku 6. Pliku nie ma, a URL działa → sprawdź generator w kroku 2 i korektę MU w kroku 6. |
| Terminala, WP-CLI i środowiska prób | Zapisz odpowiedzi HTTP oraz ustawienia wskazanymi poleceniami. | Przejdź przez całą procedurę, włącznie z macierzą parsera i testem wycofania. |
Brak opcji „Edytor plików” nie jest powodem do wyłączania DISALLOW_FILE_EDIT ani nadawania szerokich uprawnień zapisu. Nie instaluj kolejnego narzędzia SEO tylko dla tego przycisku. W zgłoszeniu do hostingu podaj domenę i poproś: „Proszę potwierdzić DocumentRoot, źródło odpowiedzi /robots.txt (plik, WordPress czy proxy), ewentualny cache tego URL oraz sposób zachowania kopii i wycofania zmiany”. To pozwala wybrać właściwy krok bez znajomości SSH.
Bez terminala status odpowiedzi możesz sprawdzić w narzędziach deweloperskich przeglądarki: otwórz kartę Network/Sieć, odśwież dokładny adres /robots.txt i wybierz to żądanie. Zapisz status, ewentualne przekierowanie oraz treść odpowiedzi. Sam widoczny napis w oknie nie rozstrzyga, czy serwer zwrócił 200, 404 czy dokument HTML. Jeśli nie korzystasz z tych narzędzi, poproś hosting o te trzy informacje.
| Cel | Mechanizm | Czego nie zapewnia |
|---|---|---|
| Ograniczyć pobieranie wybranych URL-i przez współpracujące roboty | Allow / Disallow w robots.txt | Nie blokuje użytkownikom dostępu HTTP i nie gwarantuje usunięcia URL z wyników. |
| Nie indeksować publicznej strony HTML | Metatag robots noindex albo nagłówek X-Robots-Tag | Nie jest hasłem. Robot musi móc odczytać tę odpowiedź. |
| Ukryć kopię strony lub dane klientów | Uwierzytelnianie, VPN lub ograniczenie dostępu na serwerze | Sam robots.txt ani noindex nie chronią poufnych danych. |
| Wskazać mapę witryny | Sitemap z pełnym adresem działającego XML | Nie odblokowuje URL-i i nie wymusza indeksacji. |
Robots.txt jest publiczną instrukcją dla robotów, nie zabezpieczeniem zasobów. Nie wpisuj tam ścieżek do kopii bazy z przekonaniem, że staną się prywatne. Granice tego mechanizmu wyjaśnia Google: zastosowanie i ograniczenia robots.txt.
W poleceniach zastąp example.com własną domeną. WA_SITE ma zawierać protokół i host, bez końcowego ukośnika i bez ścieżki bloga. Dla https://example.com/blog/ nadal sprawdzasz https://example.com/robots.txt. Wersje www, bez www, HTTP i HTTPS mogą mieć różne odpowiedzi. Nie zgaduj właściwej wersji na podstawie nazwy katalogu na FTP.
WA_SITE='https://example.com'
curl --silent --show-error --connect-timeout 5 --max-time 15 \
--include "$WA_SITE/robots.txt"Zapisz datę, URL, status HTTP, Content-Type i pełną treść. Przy 301/302 najpierw sprawdź Location, dopiero potem odczytaj wskazany adres; nie przeocz zmiany hosta ani pętli. Dla poprawnie podanego pliku oczekujesz 200 i zwykłego tekstu UTF-8. HTML strony głównej z kodem 200 nie jest prawidłowym wynikiem tylko dlatego, że nie ma błędu HTTP. Te polecenia celowo nie używają curl --fail: musisz zobaczyć również treść błędów 404/500.
umask 077
WA_ROBOTS_AUDIT=$(mktemp -d)
curl --silent --show-error --connect-timeout 5 --max-time 15 \
--dump-header "$WA_ROBOTS_AUDIT/robots-before.headers" \
--output "$WA_ROBOTS_AUDIT/robots-before.txt" "$WA_SITE/robots.txt"
printf '%s\n' "$WA_ROBOTS_AUDIT"Nazwę, umiejscowienie w katalogu głównym hosta i format pliku określa instrukcja tworzenia robots.txt Google. Katalog tymczasowy z powyższego polecenia jest tylko zapisem odpowiedzi; nie zastępuje kopii fizycznego pliku ani ustawień wtyczki.
W panelu hostingu ustal DocumentRoot, czyli katalog obsługujący dany host. Poszukaj w nim dokładnie robots.txt, nie robots.txt.txt. Nie zakładaj, że każda instalacja ma ścieżkę public_html albo że katalog WordPressa jest jednocześnie katalogiem głównym hosta. Pobierz istniejący plik wraz z zapisem uprawnień i datą; zachowaj go poza katalogiem publicznym.
Jeśli pliku nie ma, a URL zwraca 200, odpowiedź może być prawidłowym plikiem wirtualnym. Nie twórz drugiego źródła reguł tylko po to, żeby plik pojawił się na FTP. Jeżeli jest fizyczny plik, porównaj jego treść z odpowiedzią HTTP. Różnica oznacza, że trzeba zbadać cache, inny katalog domeny albo regułę serwera/proxy.
W podstawowej konfiguracji Apache dla WordPressa istniejące pliki omijają przekazanie żądania do index.php. Fizyczny robots.txt może więc przesłonić odpowiedź WordPressa, a zmiana w panelu SEO nie zmieni tego, co pobiera robot. To wniosek dla takiego routingu, nie uniwersalna właściwość każdego hostingu. Nie zastępuj całego .htaccess fragmentem z poradnika; możesz usunąć potrzebne reguły bezpieczeństwa i przekierowania.
Mechanizm widać w warunkach !-f oraz !-d opisanych w konfiguracji Apache dla WordPress. Wirtualny plik generuje funkcja do_robots(), a wtyczki mogą zmieniać jego tekst przez filtr robots_txt.
WA_WP_ROOT='/pelna/sciezka/do/wordpress'
wp --path="$WA_WP_ROOT" core version
wp --path="$WA_WP_ROOT" option get home
wp --path="$WA_WP_ROOT" option get siteurl
wp --path="$WA_WP_ROOT" option get blog_publicZatrzymaj się, jeśli home wskazuje inną stronę albo polecenie nie działa. Nie traktuj błędu bazy jak pustej wartości. Parametr --path wybiera instalację; nie odczytuj całego wp-config.php do publicznego raportu. Opcja blog_public jest wskazówką do następnego kroku, a nie dowodem tego, jaki HTML wysyła CDN.
Ustawienia → Czytanie zawierają prośbę o nieindeksowanie witryny. W core WordPress 7.1 wartość blog_public=0 powoduje dodanie noindex do metatagu robots. Nie oznacza automatycznego dopisania Disallow: / do robots.txt: takie zachowanie usunięto już w WordPress 5.3. Dlatego wirtualny plik może zawierać standardowe reguły panelu, chociaż HTML całej witryny ma noindex.
Źródła: wp_robots_noindex(), kod metatagów WordPress 7.1 i historia do_robots(). Motyw, wtyczka i nagłówki hostingu mogą zmienić rezultat; rozstrzyga odpowiedź strony, nie sam checkbox.
WA_PAGE="$WA_SITE/przykladowa-strona/"
curl --silent --show-error --connect-timeout 5 --max-time 15 \
--include "$WA_PAGE"W nagłówkach sprawdź X-Robots-Tag, a wewnątrz <head> — metatagi robots i googlebot. Przykład intencji wyłączenia indeksacji HTML to <meta name="robots" content="noindex">. Nie wystarczy wyszukać słowa noindex w całym pliku: może wystąpić w treści poradnika lub komentarzu. Sprawdź też, czy oglądasz docelowe 200, a nie dokument pośredni z przekierowaniem.
Warunek dostępności strony oraz dwa obsługiwane miejsca dla noindex opisuje Google: blokowanie indeksowania za pomocą noindex. Nie usuwaj globalnego noindex ze stagingu, aby „naprawić SEO”. Na produkcji zmień ustawienie dopiero po potwierdzeniu, że witryna ma być publiczna, i sprawdź reprezentatywne podstrony po odświeżeniu cache.
Wbudowana mapa WordPressa zwykle zaczyna się od /wp-sitemap.xml. Wtyczka SEO może dostarczać inny indeks i wyłączać mapę core. Sprawdź aktywnego dostawcę w panelu, a następnie pobierz wskazany indeks. Prawidłowy wynik ma zawierać XML sitemapindex albo urlset, nie formularz logowania, stronę błędu czy stronę główną.
curl --silent --show-error --connect-timeout 5 --max-time 15 \
--include "$WA_SITE/wp-sitemap.xml"Przy blog_public=0 mapy core są domyślnie wyłączone; ich endpoint może zwrócić 404. Wirtualny robots.txt nie powinien wtedy automatycznie reklamować mapy core. Nie rozwiązuj tego przez wpisanie nieistniejącego URL do pliku fizycznego. Najpierw ustal, czy strona celowo jest prywatna i czy mapami nie zarządza inny mechanizm. Filtry i wtyczki mogą nadpisać ustawienia domyślne.
Powiązanie z blog_public jest w WP_Sitemaps::sitemaps_enabled(), dopisanie mapy w WP_Sitemaps::add_robots(), a odpowiedź wyłączonego endpointu w kodzie sitemaps WordPress 7.1.
Otwórz co najmniej jedną mapę podrzędną z indeksu i kilka znajdujących się w niej URL-i. Adresy powinny wskazywać zamierzoną domenę produkcyjną i wersję protokołu, nie localhost ani staging. Jeśli docelowa strona ma noindex, przekierowuje lub zwraca błąd, popraw źródło takiego wpisu. Sam status 200 indeksu mapy nie potwierdza poprawności całego zestawu.
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Sitemap: https://example.com/wp-sitemap.xmlPrzed użyciem zmień domenę i potwierdź ścieżkę mapy. Jeśli WordPress już generuje te reguły poprawnie, nie musisz tworzyć pliku fizycznego. Instalacja z innym adresem panelu wymaga właściwych ścieżek. Allow dla admin-ajax.php nie naprawia błędów PHP, nie omija hasła i nie uruchamia AJAX — dotyczy tylko reguły pobierania.
Zasady grup robotów i dopasowania ścieżek opisuje aktualna specyfikacja Google robots.txt. Potrzebę udostępnienia istotnych zasobów renderowania wyjaśnia Google SEO Starter Guide.
Dla ważnej podstrony, admin-ajax.php oraz używanych CSS i JS potrzebujesz osobnego wyniku dopasowania. W paczce uruchomiliśmy niezmodyfikowany parser i matcher google/robotstxt, commit 22b355ff855419e6a3ff8ff09c0ad7fdb17116f9. W pierwszej macierzy część wejść pochodzi z rzeczywistych odpowiedzi WordPressa, a konflikty i ścieżka CSS są jawnie syntetyczne. Osobna próba korekty w kroku 6 obejmuje także istniejący CSS pobrany przez HTTP. Nie zastąpiliśmy algorytmu Google własnym zestawem wyrażeń regularnych.
| Plik / reguła | Token robota i ścieżka | Wynik |
|---|---|---|
| Odczytany wirtualny plik WordPress | Googlebot → /wp-admin/ | DISALLOWED |
| Ten sam plik; dłuższy wyjątek Allow | Googlebot → /wp-admin/admin-ajax.php?action=test | ALLOWED |
| Odczytany fizyczny plik ćwiczenia | Googlebot → /wa-strona-1/ | DISALLOWED, choć osobny test HTTP strony zwrócił 200 |
| Syntetyczna blokada /wp-content/ i /wp-includes/ → korekta PHP | Googlebot → ścieżka CSS oraz ścieżka JS nawigacji | Przed: DISALLOWED; po: ALLOWED |
| Syntetyczne Disallow /wp-content/ + Allow /wp-content/assets/ | Googlebot → /wp-content/assets/theme.css | ALLOWED — dłuższe dopasowanie |
| Dodatkowe Disallow /wp-content/assets/private/ | Googlebot → /wp-content/assets/private/key.txt | DISALLOWED — jeszcze dłuższe dopasowanie |
| Równe Allow i Disallow /same/ | Googlebot → /same/item | ALLOWED — przy remisie wygrywa dopuszczenie |
| Disallow /common/ tylko w grupie *; osobna grupa Googlebot | Googlebot → /common/item; AuditBot → /common/item | Googlebot: ALLOWED; AuditBot: DISALLOWED w tym parserze |
| Dwie oddzielne grupy Googlebot, druga z Disallow /merged/ | Googlebot → /merged/item | DISALLOWED — grupy tego samego tokenu łączą reguły |
Oficjalne źródła, sposób wywołania i ograniczenia są w repozytorium Google przypiętym do testowanego commitu. Biblioteka ocenia podane reguły i token robota, ale nie pobiera robots.txt, nie obsługuje cache/statusów HTTP ani nie renderuje strony. Nie obejmuje również wszystkich dodatkowych zasad zachowania poszczególnych crawlerów. Wynik dla AuditBot nie jest testem innej wyszukiwarki.
pkg-config --modversion absl_strings
php -v
node robots-parser-tests.mjsSkrypt sprawdza SHA-256 źródeł Google, kompiluje oryginalne robots.cc i robots_main.cc, wykonuje wszystkie przypadki i zapisuje raport. Nie instaluje zależności; gdy brakuje kompilatora lub Abseil, zatrzymuje się. Nasza próba używała Apple clang 21.0.0, Abseil 20260107 i PHP 8.5.5. Raporty archiwalne są w evidence; nowy wynik zapisuje się obok skryptu, bez nadpisywania wcześniejszego. Przykładowa ścieżka CSS w macierzy nie jest twierdzeniem, że taki plik istnieje na Twojej stronie — dodaj jej rzeczywisty URL do własnej kontroli.
Do sprawdzenia własnej strony służy drugi helper. Umieść zapisany z HTTP tekst robots.txt jako robots-after.txt w rozpakowanej paczce, a w poleceniach zastąp domenę i ścieżki prawdziwymi URL-ami. Przekaż token Googlebot, nie cały nagłówek przeglądarki Mozilla/5.0. Helper zapisuje w wyniku hash wejścia oraz faktycznie oceniony URL, nie wysyła do niego żądania.
node robots-parser-check.mjs robots-after.txt Googlebot https://example.com/wazna-strona/
node robots-parser-check.mjs robots-after.txt Googlebot https://example.com/wp-admin/admin-ajax.phpWynik ALLOWED daje kod wyjścia 0, DISALLOWED — 1, a błąd wejścia lub narzędzia — 2. Kod 1 nie oznacza awarii parsera; oceń, czy blokada tego konkretnego URL była zamierzona. Brak pliku, biblioteki albo wynik błędu nie są dowodem dopuszczenia. Dwa dołączone przykłady CLI sprawdziliśmy osobno: panel był blokowany, a admin-ajax.php z parametrem dopuszczony.
Dla istniejącego pliku fizycznego przygotuj nową wersję jako zwykły tekst UTF-8, porównaj ją z kopią i wgraj do ustalonego katalogu hosta. Zachowaj dotychczasowe poprawne uprawnienia. Użyj kontrolowanej podmiany zgodnej z procedurą hostingu; nie pozostawiaj archiwum konfiguracji w katalogu publicznym. Jeżeli nie ma pliku, przed jego utworzeniem zapisz, że stanem wyjściowym był generator.
Dla wersji wirtualnej zmień ustawienie w mechanizmie, który faktycznie ją generuje: panelu odpowiedniej wtyczki lub własnym, wersjonowanym kodzie. Nie edytuj plików core WordPressa. Gdy dwie wtyczki próbują zarządzać tym samym, ustal jednego właściciela konfiguracji. Nie zakładaj, że przycisk „edytuj robots.txt” w każdej wtyczce zapisuje ten sam rodzaj pliku.
Po zapisie odczytaj dokładny URL /robots.txt z komputera, a nie tylko podgląd panelu. Jeśli treść jest stara, sprawdź cache konkretnego zasobu w hostingu/CDN i właściwy host. Czyszczenie całej witryny nie powinno być pierwszym, niekontrolowanym działaniem. Dopóki publiczna odpowiedź nie odpowiada projektowi zmiany, wdrożenie nie jest zakończone.
test -n "$WA_ROBOTS_AUDIT" && test -d "$WA_ROBOTS_AUDIT" || exit 1
curl --silent --show-error --connect-timeout 5 --max-time 15 \
--dump-header "$WA_ROBOTS_AUDIT/robots-after.headers" \
--output "$WA_ROBOTS_AUDIT/robots-after.txt" "$WA_SITE/robots.txt"
diff -u "$WA_ROBOTS_AUDIT/robots-before.txt" "$WA_ROBOTS_AUDIT/robots-after.txt"Diff zwraca kod 1, gdy pliki różnią się — to nie błąd wdrożenia. Oceń, czy każda różnica była zamierzona. Następnie pobierz ważną podstronę, sitemapę i rzeczywiście używane zasoby CSS/JS z jej HTML. Kod 200 zasobu potwierdza dostęp HTTP dla Twojego żądania, ale sam nie dowodzi dopuszczenia Googlebota przez robots.txt. Reguły trzeba sprawdzić osobno dla konkretnych ścieżek.
Przykład rozwiązuje jeden konkretny problem: publiczny WordPress w katalogu głównym generuje dokładnie Disallow: /wp-content/ i Disallow: /wp-includes/, mimo że zasoby z tych katalogów są potrzebne stronie. Najpierw usuń te błędne wpisy w ich źródle, jeśli masz kontrolę nad ustawieniem lub własnym kodem. Poniższy filtr MU jest jawną, wąsko ograniczoną korektą istniejącego generatora, gdy nie ma wygodnego edytora reguł. Nie jest uniwersalnym „SEO fixem” ani zaleceniem instalacji dodatkowej rozbudowanej wtyczki.
<?php
/**
* Plugin Name: WebAlpha — correction of confirmed WordPress asset blocks
* Description: Narrow correction for a public root install with one wildcard group.
* Version: 1.0.0
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
function webalpha_robots_allow_wp_resources( $output, $public ) {
if ( ! $public ) {
return $output;
}
// Fail closed on an unfamiliar policy. This is an input guard, NOT a
// substitute for Google's parser or a universal robots.txt editor.
$groups = 0;
foreach ( preg_split( '/\r\n|\n|\r/', $output ) as $line ) {
$line = trim( explode( '#', $line, 2 )[0] );
if ( '' === $line ) {
continue;
}
if ( ! preg_match( '/^(User-agent|Disallow|Allow|Sitemap)[\t ]*:[\t ]*(.*)$/i', $line, $parts ) ) {
return $output;
}
if ( 'user-agent' === strtolower( $parts[1] ) ) {
++$groups;
if ( '*' !== trim( $parts[2] ) ) {
return $output;
}
}
}
if ( 1 !== $groups ) {
return $output;
}
// Only these two complete, confirmed erroneous root-path directives.
// Do NOT remove narrower rules such as /wp-content/private/.
$corrected = preg_replace(
'/(*ANYCRLF)^[\t ]*(?i:Disallow)[\t ]*:[\t ]*\/(?:wp-content|wp-includes)\/[\t ]*(?:#[^\r\n]*)?(?:\r\n|\n|\r|$)/m',
'',
$output
);
return is_string( $corrected ) ? $corrected : $output;
}
add_filter( 'robots_txt', 'webalpha_robots_allow_wp_resources', 99, 2 );Mechanizm opiera się na oficjalnym filtrze robots_txt. Automatyczne ładowanie pliku, jego lokalizację i ograniczenia utrzymania opisuje dokumentacja Must Use Plugins WordPress. Nie kopiujemy zamieszczanych przez użytkowników przykładowych blokad obrazów i zasobów z komentarzy do dokumentacji.
| Sprawdzany URL | Przed korektą | Po korekcie |
|---|---|---|
| /wp-includes/css/dist/block-library/style.min.css | DISALLOWED | ALLOWED; osobny GET po zmianie: 200 text/css |
| /wp-includes/js/dist/script-modules/block-library/navigation/view.min.js | DISALLOWED | ALLOWED; osobny GET po zmianie: 200 text/javascript |
| /wp-admin/ | DISALLOWED | DISALLOWED |
| /wp-admin/admin-ajax.php | ALLOWED | ALLOWED |
| /wa-strona-1/ — syntetyczna strona kontrolna | ALLOWED | ALLOWED; osobny GET potwierdził 200 i treść |
Nowy test pobrał istniejący arkusz core, lecz nie twierdzimy, że był podpięty w HTML strony kontrolnej. Skrypt nawigacji jest zasobem wykrytym we wcześniejszej próbie. Reguły przed/po oceniono offline na treści HTTP o zgodnym SHA-256. Nie wysyłaliśmy Googlebota ani żądania do Google i nie testowaliśmy renderowania. Na Twojej stronie wybierz rzeczywiście potrzebne URL-e oraz sprawdź je ponownie po wdrożeniu.
node robots-generator-lab.mjs
node robots-generator-rules-test.mjsUruchamiaj to dopiero po przygotowaniu source według README i po zakończeniu innych prób. Raporty archiwalne pozostają w evidence. Runner nie uruchamia ani nie resetuje Dockera, a istniejących raportów nie nadpisuje. Jeśli raport HTTP nie ma passed: true oraz czterech zaliczonych kontroli cleanup, zatrzymaj się — nie przechodź do kolejnych zmian. Pełna próba parsera wymaga narzędzi C++/Abseil opisanych wcześniej.
Kod i rzeczywiste raporty: fizyczny/wirtualny robots, oficjalny parser Google z licencją, 40 przypadków reguł, 12 testów PHP oraz osobna integracja MU z HTTP i kolejnymi 10 przypadkami parsera. Bez danych klientów.
Paczka zawiera README z pełnym uruchomieniem: budową kontenerów, przygotowaniem źródła i wywołaniem testu. Automatyczne ćwiczenie działa tylko z dedykowanym projektem oraz source na 127.0.0.1:18881; odmawia zastąpienia istniejącego pliku i wcześniejszych wyników. Nie kieruj skryptu na hosting. Poniższe kroki opisują także ręczne odtworzenie mechanizmu na własnej, odseparowanej kopii.
# WA robots physical experiment
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Disallow: /wa-strona-1/
Sitemap: https://example.com/wp-sitemap.xmlGdy po usunięciu pliku żądanie trafia do WordPressa, generator nadal może zwracać 200. Próba błędu 404 wymaga osobnej, tymczasowej odpowiedzi w dokładnym endpointcie — i sprawdzenia jej statusu. W kontrolowanym laboratorium można użyć hooka do_robotstxt, który zakończy obsługę odpowiedzią 404, po czym usunąć wyłącznie ten hook. Nie zmieniaj przy tym całego routingu witryny ani .htaccess, żeby wywołać błąd jednej ścieżki.
Dla Google odpowiedź 404 robots.txt oznacza brak dostępnego zestawu reguł, a nie blokadę całej witryny. Podobnie 403 nie jest sposobem na zakaz crawlowania. Błędy 5xx i problemy połączenia mają odrębną obsługę, uwzględniającą ostatnią poprawną wersję. Nie projektuj ochrony strony przez celowe psucie tego endpointu.
Interpretacja statusów pochodzi z sekcji obsługi błędów HTTP w dokumentacji Google. Odpowiedź uzyskana z localhost potwierdza jedynie zachowanie naszej konfiguracji HTTP. Nie jest testem indeksowania w wyszukiwarce.
| Faza | Robots.txt | HTML strony | Mapa core |
|---|---|---|---|
| Początkowe blog_public=0 | 200, reguły panelu, bez Sitemap | 200, noindex, nofollow | 404 |
| Lokalne blog_public=1 | 200, Sitemap i marker generatora | 200, bez noindex | 200, indeks XML |
| Plik fizyczny z Disallow strony kontrolnej | 200, marker fizyczny zamiast wirtualnego | Nadal 200, bez noindex | 200, indeks XML |
| Wycofanie fizycznego pliku | 200, powrót markera generatora | 200, bez noindex | 200, indeks XML |
| Kontrolowany hook 404 | 404, marker próby błędu | 200, bez noindex | 200, indeks XML |
| Pełne wycofanie ćwiczenia | 200, treść identyczna SHA-256 z początkiem | 200, noindex, nofollow | 404 |
W każdej fazie odczytaliśmy także rzeczywiście podpięty skrypt nawigacji motywu; zwracał HTTP 200. W badanym HTML nie było zewnętrznego arkusza przez link rel=stylesheet, więc raport jawnie oznacza próbkę CSS jako nieobecną, a nie zaliczoną. To kontrola próbek zasobów, nie pełne renderowanie ani parser zasad Googlebota. Po ćwiczeniu nie pozostały nasz plik fizyczny, wtyczka MU ani testowa opcja w bazie.
Zakres raportu i żądanie ponownego pobrania opisuje pomoc Search Console: robots.txt, a odświeżanie pliku — Google: aktualizacja robots.txt. Google może używać wersji z cache; natychmiastowa aktualizacja w Twoim curl nie oznacza natychmiastowej zmiany po stronie wyszukiwarki.
| Objaw | Co sprawdzić | Działanie i odbiór |
|---|---|---|
| Nie ma pliku na FTP, ale /robots.txt zwraca tekst 200 | Generator WordPressa, routing hostingu | To może być poprawna wersja wirtualna. Ustal jej właściciela przed edycją. |
| Wtyczka pokazuje nowe reguły, HTTP stare | Fizyczny plik, właściwy DocumentRoot, cache/CDN | Porównaj źródła, popraw jedno właściwe miejsce, ponów GET dokładnego URL. |
| Robots.txt pozwala pobierać, strona ma noindex | blog_public, ustawienie SEO podstrony, meta i X-Robots-Tag | Zdecyduj o indeksacji tej strony. Nie dodawaj Allow jako „naprawy” metatagu. |
| Mapa core zwraca 404 | Prywatność witryny, wtyczka map, routing | Zweryfikuj faktycznego dostawcę; nie dopisuj nieistniejącej mapy do robots.txt. |
| Strona jest blokowana, choć widzisz Allow | Ścieżkę, wybraną grupę robota, bardziej szczegółowe reguły | Przetestuj dokładny URL, nie tylko nazwę katalogu. Nie oceniaj pliku samym HTTP 200. |
| Po usunięciu fizycznego pliku jest nadal robots.txt | Powrót do generatora | Oceń treść odpowiedzi wirtualnej. Nie usuwaj plików core, aby wymusić 404. |
| Robots.txt zwraca 500 lub stronę HTML błędu | Log aplikacji/serwera, ostatnia zmiana, routing | Wycofaj właściwą zmianę i sprawdź poprawny status oraz tekst; nie maskuj błędu przypadkowym Disallow. |
Jeżeli po tych kontrolach indeksacja nadal jest niezgodna z celem, kolejnym krokiem jest sprawdzenie canonicali, linków wewnętrznych, odpowiedzi URL i danych GSC, nie rozbudowywanie robots.txt na ślepo. Taki zakres obejmuje audyt techniczny SEO; bieżącą kontrolę zmian można połączyć z opieką nad stroną WordPress.
Prześlij adres strony i opis problemu z indeksacją. Ustalimy zakres analizy odpowiedzi serwera, reguł robotów, canonicali, sitemap i danych Search Console. Nie przesyłaj haseł, kopii bazy ani plików konfiguracyjnych przez formularz.
Sprawdź zakres audytu SEOStrony firmowe, landing page i serwisy w WordPress oraz Next.js — projektowane pod konwersję i widoczność w Google.
Tworzenie stron WWWProjektowanie UX/UIStrony dla firmLanding pageRedesign strony
Sklepy na PrestaShop i WooCommerce — wdrożenia, migracje i dedykowane moduły pisane przez zespół senior developerów.
Tworzenie sklepówNowy sklep PrestaShopMigracja na PrestaShopModuły PrestaShopIntegracja z hurtowniami
Pozycjonowanie, SEO techniczne i optymalizacja konwersji — widoczność, kliknięcia i zarejestrowane konwersje porównywane z baseline'em.
SEO dla firmLokalne SEOContent SEOAudyt SEOSEO techniczne
Utrzymanie, aktualizacje i stały rozwój — bierzemy odpowiedzialność za obszar techniczny również po starcie projektu.
Opieka nad stronąAktualizacje i serwerSupport w pakietach godzinRozwój stronyWdrożenia niestandardowe
Bezpłatna konsultacja
Opisz, czego potrzebujesz — zaproponujemy zakres, technologię i realny harmonogram. Bez zobowiązań.
Następny krok
Krótka rozmowa albo wiadomość — wrócimy z konkretną propozycją zakresu.
Formularz kontaktowyOpisz, czego potrzebujesz — strony, sklepu, integracji czy wsparcia technicznego. Odpowiemy z konkretnymi propozycjami i orientacyjną wyceną, zwykle w ciągu 24–48 godzin roboczych.
ul. Henryka Pachońskiego 7a
31-223 Kraków
Biuro czynne: pon.–pt., 9:00–17:00
Webalpha
NIP: 6562340974
REGON: 385895790