--- name: indexability-conflicts description: "Use when auditing a site for indexability issues, investigating why pages appear in Google's index that should be excluded (or vice versa), or reviewing robots.txt and meta robots configurations for consistency." metadata: category: seo priority: medium difficulty: intermediate estimatedTime: "10" source: frontendchecklist.io url: https://frontendchecklist.io/en/rules/seo/indexability-conflicts --- # Avoid conflicting indexability signals Conflicting indexability directives create unpredictable crawling and indexing behaviour. The most dangerous combination is robots.txt blocking a page that also has a `noindex` tag — the `noindex` is never read, but the URL is still known to Google, leaving it in a limbo state that wastes crawl budget. ## Quick Reference - robots.txt blocks crawling; `noindex` blocks indexing — they are different mechanisms and should not be applied together - A page blocked in robots.txt cannot receive a `noindex` directive because crawlers never read the page - Canonical tags pointing to a `noindex` page create an unresolvable conflict — canonicalise to an indexable URL instead ## Check For each page, collect four signals: (1) Is the URL path blocked by robots.txt? (2) Does the page HTML contain ``? (3) Does the HTTP response include an `X-Robots-Tag: noindex` header? (4) Does the page's `` point to a different URL? Flag: pages blocked in robots.txt that also have noindex directives, pages with canonical pointing to a noindex URL, and pages with conflicting index/noindex signals from meta and HTTP header. ## Fix 1. Identify all pages where robots.txt blocks crawling AND the page also has `noindex`: - If you want the page excluded from the index: remove the robots.txt rule; keep the `noindex` so crawlers can read it. - If you want to block all crawling: remove `noindex` (irrelevant if not crawled); keep the robots.txt block. 2. Identify canonical tags pointing to `noindex` pages: - The canonical-url destination must be an indexable page. - Change the canonical-url to point to an indexable URL, or remove `noindex` from the destination. 3. Identify pages with both `index` and `noindex` in meta robots (from different tags or sources): - Google uses the most restrictive directive; resolve to a single clear intent. 4. Verify after fixing using Google Search Console URL Inspection for each affected page. ## Explain robots.txt is a crawl directive; `noindex` is an indexing directive. They operate at different stages of Google's pipeline. A page blocked in robots.txt is never fetched, so its `noindex` tag is never read — yet the URL is still known from sitemaps or links, keeping it in a crawl ambiguity state. Google's documentation explicitly warns against blocking pages in robots.txt that you also want to declare as `noindex`. ## Code Review Programmatically fetch robots.txt and parse its Disallow rules. For each page URL, determine if it matches a Disallow pattern. If yes, fetch the page HTML and check for `` tags — flag if noindex is present. Also check the `X-Robots-Tag` HTTP response header for conflicts with the meta tag. Report the specific conflict type for each flagged URL. --- For full implementation details, code examples, and framework-specific guidance, see `references/rule.md`. Rule page: https://frontendchecklist.io/en/rules/seo/indexability-conflicts