Fixing Zero Google Traffic & AdSense 'ads.txt Not Found' on Next.js 15 + Cloudflare Pages
Why did Google AdSense fail to read a 200 OK ads.txt file? How querying Cloudflare GraphQL firewall logs exposed Bot Fight Mode blocking Google crawlers, plus 5 technical SEO fixes for Next.js static blogs.
Related Articles

From Vercel to Cloudflare Pages: Migrating a Next.js 15 Blog to Static Edge Hosting
Stripping away the hidden complexity of serverless functions to bake Next.js 15 into pure static HTML on Cloudflare's global edge network.

Beyond the Romance of the Terminal Cockpit: Why I Migrated from Herdr + CLI to Antigravity Desktop App
From an architecture comparison of Herdr Remote vs Antigravity Remote Control, to overcoming terminal screen freezing (Stale Overwrite) and SQLite race conditions with an orchestration script, here is how I settled into a unified Agentic GUI IDE.

The Code Succeeded, the Project Failed: A Retrospective on Automating My Wife's E-Commerce Shipping with FastMCP
How a hobbyist maker built a zero-click shipping label pipeline using a home NAS, FastMCP, driverless IPP printing, and 0.1mm ReportLab coordinates—only to be defeated by legacy Windows agents and unit economics.
© 2026 HEISENBUG. All rights reserved. Unauthorized reproduction or redistribution is strictly prohibited.
This article reflects personal experiences and opinions as of the date of publication.
Table of Contents
- "It Returns 200 OK in My Browser—Why Can't Google AdSense Find ads.txt?"
- 1. Executive Summary: The 5 Root Causes & Engineering Fixes
- 2. Diagnosis #1: Separating Bot Noise from Real Traffic via Cloudflare GraphQL
- 🔍 Root Cause: Split www vs. non-www Canonical Mismatch
- Previous output of https://dbgmy.life/robots.txt
- 3. Diagnosis #2: Catching Cloudflare WAF Challenging the Google AdSense Crawler
- 4. Two Infamous Cloudflare WAF Traps to Avoid
- Trap #1: "Can I Leave Free Bot Fight Mode ON If I Create a WAF Skip Rule?" (❌ No!)
- Trap #2: Fixing skip action parameters 'phase' and 'ruleset' cannot be used together
- 5. Three Code-Level Next.js 15 Fixes for SEO & Clean AdSense Integration
- ① Defeating the 'Thin Content' Trap (noindex, follow on Tag Pages)
- ② Server-Rendering JSON-LD Structured Data into Static HTML
- ③ Replacing Intrusive Auto Ads with a Clean Bottom-of-Post AdSenseUnit
- Conclusion: Debug SEO with Logs, Not Guesswork
Comments