# Apply4Me — production robots (canonical host: https://www.apply4me.io) # Marketing + blog are crawlable; app/auth surfaces are not. # # Every app route lives under a locale prefix (/pl/settings, /en/cv-kit, ...), # so the bare `Disallow: /settings` this file used to carry matched NOTHING a # crawler actually sees, and every signed-in surface shipped as a crawlable # 70-word SPA shell. Each segment below is therefore listed once unprefixed # (legacy URLs + redirect targets) and once per locale. # # Deliberately spelled out instead of `/*/settings`: robots patterns match as a # PREFIX, so the wildcard form would also block a future blog post slugged # "settings-guide". Locales come from src/i18n/locales.ts (en, pl, de) — adding # a locale or an app route segment means adding lines here, or it leaks. # # NOT blocked here on purpose: # - ?page= / ?q= blog variants — they carry a canonical to the real path, and # robots-blocking them would stop Google reading that canonical. # - /de — noindex is served in the shell HTML instead, which is definitive; # a robots block would let the bare URL get indexed with no content. User-agent: * Allow: / # Infra Disallow: /admin Disallow: /api Disallow: /monitoring # Auth + signup funnel Disallow: /login Disallow: /en/login Disallow: /pl/login Disallow: /de/login Disallow: /sign-in Disallow: /en/sign-in Disallow: /pl/sign-in Disallow: /de/sign-in Disallow: /sign-up Disallow: /en/sign-up Disallow: /pl/sign-up Disallow: /de/sign-up Disallow: /signup Disallow: /en/signup Disallow: /pl/signup Disallow: /de/signup Disallow: /auth/ Disallow: /en/auth/ Disallow: /pl/auth/ Disallow: /de/auth/ Disallow: /verify Disallow: /en/verify Disallow: /pl/verify Disallow: /de/verify Disallow: /plan-selection Disallow: /en/plan-selection Disallow: /pl/plan-selection Disallow: /de/plan-selection Disallow: /onboarding Disallow: /en/onboarding Disallow: /pl/onboarding Disallow: /de/onboarding Disallow: /winback Disallow: /en/winback Disallow: /pl/winback Disallow: /de/winback # Signed-in product surfaces Disallow: /dashboard Disallow: /en/dashboard Disallow: /pl/dashboard Disallow: /de/dashboard Disallow: /applications Disallow: /en/applications Disallow: /pl/applications Disallow: /de/applications Disallow: /cv-kit Disallow: /en/cv-kit Disallow: /pl/cv-kit Disallow: /de/cv-kit Disallow: /job-recommendations Disallow: /en/job-recommendations Disallow: /pl/job-recommendations Disallow: /de/job-recommendations Disallow: /auto-apply Disallow: /en/auto-apply Disallow: /pl/auto-apply Disallow: /de/auto-apply Disallow: /career-path Disallow: /en/career-path Disallow: /pl/career-path Disallow: /de/career-path Disallow: /career-paths Disallow: /en/career-paths Disallow: /pl/career-paths Disallow: /de/career-paths Disallow: /interview-prep Disallow: /en/interview-prep Disallow: /pl/interview-prep Disallow: /de/interview-prep Disallow: /settings Disallow: /en/settings Disallow: /pl/settings Disallow: /de/settings Disallow: /purchase Disallow: /en/purchase Disallow: /pl/purchase Disallow: /de/purchase # Utility / internal pages Disallow: /delete-account Disallow: /en/delete-account Disallow: /pl/delete-account Disallow: /de/delete-account Disallow: /hero-lab Disallow: /en/hero-lab Disallow: /pl/hero-lab Disallow: /de/hero-lab # AI answer engines — explicitly allowed. # # They already match `User-agent: *` above, so these groups change nothing # today. They exist because a robots.txt group is winner-takes-all: the moment # any future edit adds a broad Disallow to `*`, every one of these crawlers # would inherit it silently and the site would drop out of AI answers with no # error anywhere. Naming them means that edit has to be deliberate. User-agent: GPTBot User-agent: OAI-SearchBot User-agent: ChatGPT-User User-agent: ClaudeBot User-agent: Claude-User User-agent: Claude-SearchBot User-agent: PerplexityBot User-agent: Perplexity-User User-agent: Google-Extended User-agent: Applebot-Extended User-agent: meta-externalagent User-agent: Bingbot Allow: / # Google Ads landing page crawler. # # AdsBot-Google ignores the global `User-agent: *` group BY DESIGN — it only # obeys a group that names it. Without this block it is technically unbound # here; spelled out so an ad pointed at any URL is checked against a rule we # chose rather than none. Ads only run to /pl marketing + tool pages. User-agent: AdsBot-Google User-agent: AdsBot-Google-Mobile Allow: / Sitemap: https://www.apply4me.io/sitemap.xml Sitemap: https://www.apply4me.io/sitemap-images.xml