When a robots.txt edit appears to be ignored, we separate three different states: what the repository contains, what production serves now, and what a crawler may still have cached.
We check production before blaming crawler cache
We open the exact origin /robots.txt and inspect the current response. A wrong deployment, stale CDN object, host mismatch, redirect, or server error can look like “Google has not refreshed robots.txt” even when the crawler is not the problem.
Our robots.txt checker is designed for this live-response step.
We account for normal caching
Google documents that robots.txt is generally cached for up to about 24 hours, although cache behavior can vary with availability and response headers. We therefore do not repeatedly republish the file every few minutes just because crawler behavior has not changed immediately.
We compare the exact host
Cache debugging is origin-specific. www.example.com, example.com, and shop.example.com can serve different files. A successful fetch on one host does not prove another crawler-facing origin was updated.
We inspect delivery layers
If the live response is old, we trace the path from application to CDN and edge cache. We check build output, routing rules, reverse proxies, cache invalidation, and whether a platform generates robots.txt dynamically. A repository commit is not proof of public delivery.
Error responses change the diagnosis
A temporary 5xx or rate-limited response is different from a healthy 200 containing old text. We inspect HTTP status before reasoning about the rules themselves. The HTTP status guide covers crawler behavior when robots.txt cannot be fetched normally.
Our verification sequence
- fetch production
/robots.txtfrom the exact host; - record HTTP status, final URL, and response body;
- compare it with the intended deployment;
- check CDN or platform caches;
- allow for normal crawler cache, commonly around 24 hours;
- validate the live file;
- test representative URLs after the expected refresh window;
- use Search Console or logs when available to distinguish crawler state from delivery state.
We make another edit only when the current file is actually wrong. That prevents a simple cache delay from turning into a sequence of unnecessary rule changes.