[Web-Monetarisierung #2] Google AdSense-Zulassung für statische Websites: Lösung der ads.txt 404-Crawler-Falle & HeadTags-Integration
· 2 Minuten Lesezeit

📌 Kernaussagen (TL;DR)
- Das Problem: Im Gegensatz zu dynamischen CMS (WordPress) lösen statische Websites (Docusaurus, Hugo) auf GitHub Pages häufig die Warnung „Erträge gefährdet: ads.txt fehlt“ aus, weil Crawler durch Hydration-Verzögerungen oder WAF-Regeln blockiert werden.
- Die Lösung: Verifizierungs-Tag direkt über
headTagsindocusaurus.config.tseinfügen,ads.txtinstatic/ads.txtplatzieren und Cloudflare WAF-Bypass-Regeln für denGooglebot-AdsTxt-Crawler definieren.- Das Ergebnis: 100 % automatisierte Crawler-Erreichbarkeit, keine 404-Fehler und erfolgreiche AdSense-Freischaltung bei anhaltenden Lighthouse-Scores über 95.
1. Das Problem: Warum statische Seiten bei ads.txt scheitern
Google AdSense verlangt zwei fundamentale technische Voraussetzungen:
- Publisher-Tag im
<head>:<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-..." crossorigin="anonymous"></script> - Validierte
ads.txtunter der Root-Domain:https://example.com/ads.txt
Bei Single Page Applications (SPAs) und SSGs schlägt die Validierung oft fehl, wenn JavaScript erst clientseitig gerendert wird oder Cloudflare Managed Challenge Bot-Filter den AdSense-Crawler versehentlich blockieren.
2. Die Lösungsschritte
Schritt 1: Saubere HeadTags-Injektion in Docusaurus
Fügen Sie das Skript in docusaurus.config.ts ein:
headTags: [
{
tagName: 'script',
attributes: {
async: 'true',
src: 'https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-4654073335496617',
crossorigin: 'anonymous',
},
},
],
Schritt 2: Platzierung von ads.txt
Erstellen Sie die Datei static/ads.txt:
google.com, pub-4654073335496617, DIRECT, f08c47fec0942fa0
Docusaurus kopiert Dateien aus static/ direkt in das Root-Verzeichnis des Build-Outputs (build/ads.txt).
Schritt 3: Cloudflare WAF-Regel für Googlebot-AdsTxt
Erstellen Sie eine WAF-Ausnahmeregel, damit Crawler nicht durch Bot-Protection-Challenges geblockt werden:
- Feld:
User Agent - Operator:
contains - Wert:
Googlebot - Aktion:
Bypass / Skip
📌 Management Summary (3–5 Zeilen)
- Automatisierte Bereitstellung: Die Platzierung der
ads.txtimstatic/-Verzeichnis garantiert die Verfügbarkeit unterdomain.com/ads.txt. - HeadTags statt React-Hooks: Die Injektion über
docusaurus.config.ts headTagsstellt sicher, dass der AdSense-Code bereits im initialen statischen HTML enthalten ist. - Cloudflare WAF konfigurieren: Der
Googlebot-AdsTxt-Crawler muss explizit von Bot-Challenges ausgenommen werden. - Verifizierung nach 24 Stunden: Sobald die DNS- und WAF-Pfade frei sind, schließt Google die Publisher-Prüfung erfolgreich ab.
