Skip to content

Appendix D — Decision trees

The Technical SEO Reference · each tree's evidence lives in the noted chapter

D.1 Keep out of Google: crawl-block vs noindex vs auth (→ Ch 7 §7.7, Ch 3)

flowchart TD
    A[Content must not appear in Google] --> B{Is it confidential /<br>must no one reach it?}
    B -- yes --> C[Authentication / password.<br>Only real protection — robots.txt and<br>noindex do nothing for humans]
    B -- no --> D{Must the URL never<br>show in results?}
    D -- yes --> E[noindex meta/header —<br>URL MUST stay crawlable<br>never combine with robots disallow]
    D -- no, just save crawl cost --> F[robots.txt disallow —<br>⚠️ URL can still be indexed<br>from links, without content]

D.2 The removal ladder (→ Ch 7 §7.8, Ch 14 §14.9)

flowchart TD
    A[Content must come OUT of Google] --> B{Emergency?}
    B -- yes --> C[Removals tool: hides in ~hours<br>⚠️ TEMPORARY — ~6 months]
    C --> D[…then make it permanent below]
    B -- no --> D{Does the content still exist?}
    D -- gone --> E[404 / 410 — drops on recrawl]
    D -- stays public --> F[noindex, crawlable]
    D -- stays private --> G[Auth-gate it]

D.3 Faceted navigation (→ Ch 10 §10.8)

flowchart TD
    A[Filter/facet URLs exist] --> B{Do any facet pages<br>earn search demand?}
    B -- no --> C{Control point available?}
    C -- robots.txt --> D[Disallow parameter patterns +<br>allow the canonical listing<br>first-tier per Google]
    C -- implementation --> E[Fragment-based filters —<br>no crawl impact at all]
    B -- some --> F[Whitelist crawlable facets:<br>& separator, stable order,<br>404-in-place for empty/nonsense combos]
    F --> G[Second-tier only if needed:<br>canonical to unfiltered slower;<br>nofollow needs 100% anchor coverage]

D.4 Choosing a redirect (→ Ch 16 §16.1)

flowchart TD
    A[URL must send users elsewhere] --> B{Permanent move?}
    B -- yes --> C[301/308 server-side —<br>target becomes canonical]
    B -- no --> D{Why temporary?}
    D -- outage/variant test --> E[302/307 — source stays<br>canonical and in results]
    D -- A/B test --> F[302 + canonical on variants —<br>never 301, never noindex]
    A --> G{Server config impossible?}
    G -- yes --> H[Instant meta refresh = permanent<br>JS redirect = last resort<br>renders may fail]

D.5 Planned downtime (→ Ch 16 §16.9)

flowchart TD
    A[Site must pause] --> B{How long?}
    B -- hours–2 days --> C[503 + Retry-After, static page<br>⚠️ robots.txt must NOT 503]
    B -- weeks --> D[Indexable 200 placeholder home;<br>limit functionality, keep URLs alive]
    B -- prefer zero impact --> E[Stay up: disable transactions,<br>banner + structured-data availability]
    A --> F[NEVER: Removals tool, noindex,<br>403/404-ing the site for maintenance]

D.6 AI-bot policy matrix (→ Ch 5 §5.9)

flowchart TD
    A[Decide per crawler class] --> B{Google Search visibility<br>incl. AI Overviews/AI Mode?}
    B -- keep --> C[Allow Googlebot; tune with snippet<br>controls / GSC gen-AI toggle only]
    B --> D{Gemini training/grounding?}
    D -- opt out --> E[Disallow Google-Extended —<br>zero Search impact]
    A --> F{Third-party AI search<br>ChatGPT/Perplexity/Copilot?}
    F -- want citations --> G[Allow their search bots<br>OAI-SearchBot, PerplexityBot,<br>Claude-SearchBot…]
    F -- protect content --> H[Disallow training bots<br>GPTBot, ClaudeBot, CCBot…<br>⚠️ user-triggered fetchers may<br>ignore robots.txt anyway]

D.7 hreflang debugging (→ Ch 11 §11.13)

flowchart TD
    A[Wrong-locale URL ranking] --> B{Annotations reciprocal<br>incl. self-reference?}
    B -- no --> C[Fix return links —<br>ignored per-pair otherwise]
    B -- yes --> D{Codes valid?<br>no UK/EU, no region-only,<br>no es-419}
    D -- no --> E[Fix codes — reserved codes<br>are ignored SILENTLY]
    D -- yes --> F{Variant's Google-selected<br>canonical = itself?}
    F -- no --> G[Cross-locale canonicalization:<br>same-language canonicals,<br>differentiate content, check cluster membership]
    F -- yes --> H{Annotations point at<br>200, indexable, canonical URLs?}
    H -- no --> I[Handshake broken —<br>annotate final URLs only]
    H -- yes --> J[Check head validity + method conflicts;<br>then consider translated-results confounder]