User-agent: * Disallow: /za/lib/ Disallow: /za/images/return2/ Disallow: /za/pdf/ # React SPA shell routes — these render as the app shell with no page-specific # content (soft-404s if indexed), so exclude them. Mirrors the SPA's own # robots.txt (which is unreachable on www: the monolith serves /robots.txt). Disallow: /za/auth/ Disallow: /za/get-started Disallow: /za/onboarding/ Disallow: /za/dashboard Disallow: /za/profile # /za/tax-return is the private filing shell, but this bare prefix ALSO swallowed # the valid public 200 page /za/tax-return-documents/. Anchor to the exact route # ($) and its children (/) so /za/tax-return-documents stays crawlable. # NB: $ and * are Google/Bing robots.txt extensions. Disallow: /za/tax-return/ Disallow: /za/tax-return$ Disallow: /za/my-tax-documents Disallow: /za/submission-details/ Disallow: /za/efiling/ # Partner-embedded calculator iframes render the bare SPA shell and duplicate the # canonical /za/calculators/ pages — keep them out of the index. Disallow: /za/embed/ # SPA content sitemap (the prerendered /za/ pages, ~8.5k URLs). The legacy # /za/sitemap-za.xml is retired (now 302s → /404error.php), so it is NOT listed # here — a dead sitemap in robots triggers a Search Console "couldn't fetch" error. Sitemap: https://www.taxtim.com/za/sitemap.xml