Cloudflare-Workers-SEO
Wie Sie technische SEO-Änderungen auf Cloudflare Workers umsetzen — Fetch-Handler, HTMLRewriter für Canonical/Hreflang/JSON-LD, KV-Weiterleitungen, Cache API und Edge-Cache sowie die Cloaking-Grenze.
Sprachen
1 Evidenzsignal auf dieser Seite
- Verknüpfte Quelldatengooglebot.json
Cloudflare-Workers-SEO bedeutet technische SEO auf der serverlosen Laufzeit von Cloudflare: Ein Worker sieht nur Requests, die zu seiner Route passen, und jeder gelangt in einen Fetch-Handler, der Request, Response-Header und Response-Body umschreiben kann. HTMLRewriter ist der Mechanismus für Canonical-Tags, Hreflang oder JSON-LD ohne CMS-Deployment. Weiterleitungen im großen Maßstab gehören in KV oder D1; Bulk Redirects und Rules sind für kleine Mengen einfacher. Drei verschiedene Dinge heißen Cache: Workers Cache API, Cloudflare Edge-Cache und Origin Cache-Control. Die harte Regel ist Cloaking: Für Googlebot und Nutzer muss dieselbe Logik gelten. Die häufigste Workers-spezifische Falle ist Bot Fight Mode, der Googlebot blockiert.
TL;DR — Cloudflare Workers sind kleine Programme, die im Cloudflare-Netzwerk vor Ihrer eigentlichen Website laufen. Ein Worker kann eine Weiterleitung hinzufügen, einen Meta-Tag korrigieren oder einen Canonical-Tag einschleusen, während die Seite vorbeiläuft – ohne Ihr CMS anzufassen oder auf Entwickler zu warten. Diese Seite zeigt die praktische, code-nahe Umsetzung der umfassenderen Edge-SEO-Idee: wie Sie das konkret mit Workers tun. Die eine Regel, die Sie nicht brechen dürfen: Was auch immer ein Worker ändert, muss für Google und echte Besuchende auf dieselbe Weise geändert werden. Google etwas anderes zu zeigen ist Cloaking.
Was ein Cloudflare Worker in einfachen Worten ist
Wenn Ihre Website auf Cloudflare liegt, läuft jede Anfrage eines Besuchers (oder von Googlebot) durch das Cloudflare-Netzwerk, bevor sie Ihren tatsächlichen Server erreicht. Ein Worker ist ein kleines Skript, das Sie an dieser Stelle im Pfad ausführen können. Es sieht die eingehende Anfrage und die ausgehende Antwort und kann beide ändern. Evidence for this claim Cloudflare Workers run code on Cloudflare's network and can inspect or modify requests and responses. Scope: Cloudflare Workers request handling. Confidence: high · Verified: Cloudflare Workers: How Workers works
Das’s Die whole appeal für SEO: Sie get to fix things on Seiten Sie kann’t otherwise edit. Stuck on a locked-down platform? Waiting weeks für a developer to add a Canonical tag? A Worker kann do it in minutes, live, ohne a Deployment to Die Website itself.
Wofür Menschen Workers im SEO verwenden
- Weiterleitungen — send old URLs to new ones at Die Edge, even thousands of them.
- Fixing oder adding tags — inject a Canonical tag, correct a title, add Hreflang, drop in structured data — all ohne editing Die Seite’s source.
- Rewriting Header — add oder fix things like
X-Robots-Tag.
Die Regel, die Sie nicht brechen dürfen
Whatever Ihre Worker does, it has to do it für everyone. If Sie show Googlebot a anders Seite than a real person sees — to game rankings — Das’s cloaking, und it’s against Google’s Regeln. Evidence for this claim Google defines serving materially different content to search engines and users to manipulate rankings as cloaking and a spam-policy violation. Scope: Google Search spam policy; legitimate personalization is context-dependent. Confidence: high · Verified: Google: Spam policies — cloaking Die safe pattern ist simple: apply Die gleich logic to every Request, no matter who’s asking. (Die Edge SEO hub covers Diese Regel in depth — Diese Seite assumes Sie already get Die concept und want Die Cloudflare-specific how-to.)
Die zwei Wege, sich selbst zu schaden
Deutsche Fassung: Most “Cloudflare hurt my SEO” stories aren’t Die Worker code at all:
- A bot-blocking setting. Cloudflare’s Bot Fight Mode kann accidentally Block oder challenge Googlebot. If Google kann’t fetch Ihre Seiten, nothing else matters.
- Caching confusion. Cloudflare has mehr than one kind of Cache, und if Sie don’t know which one Sie’re touching, a Änderung Sie shipped kann seem to “nicht show up.”
Deutsche Fassung: Want Die actual code — a fetch handler, an HTMLRewriter example, a KV Weiterleitung
table — plus Die Caching und bot-blocking details? Switch to Die Fortgeschritten tab.
TL;DR — Ein Cloudflare Worker sieht nur Anfragen, die seiner konfigurierten Route entsprechen, und fängt jede davon in einem einzigen
fetch-Handler ab. Dort ändern Sie nacheinander die Anfrage, die Response-Header und den Response-Body überHTMLRewriter. Das ist der tatsächliche Mechanismus hinter „einen Canonical-Tag einschleusen“ oder „einen Titel korrigieren“ – und er muss idempotent sein und gegen fehlende, doppelte und nicht-HTML- Responses getestet werden, nicht nur gegen den Idealfall. Weiterleitungen im großen Maßstab liegen in KV (schneller Schlüsselabruf) oder D1 (relational); Bulk Redirects/Rules decken kleinere Mengen einfacher ab, und ich bevorzuge generell Weiterleitungen auf Edge-Ebene gegenüber Weiterleitungen auf Server-Ebene – wählen Sie aber einen einzigen Besitzer pro URL, da eine Worker-Weiterleitung, eine Bulk Redirect und eine Origin-Weiterleitung alle auf demselben Pfad greifen können. Drei unterschiedliche Dinge teilen sich das Wort „Cache“ – die Workers Cache API (caches.default), der Cloudflare-Edge-Cache undCache-Controldes Origins – und ihre Verwechslung ist die häufigste Ursache dafür, dass „mein Tag nicht angezeigt wurde“; diagnostizieren Sie veraltete Inhalte anhand von Cache-Key, Schicht, TTL und Invalidierung, statt zu raten. Googles eigene Hinweise zu ETag / If-None- Match / 304 sind für einen Worker, der die Response besitzt, direkt umsetzbar. Die Cloaking-Grenze: identische Logik für jede anfragende Partei. Die Workers-spezifischste selbst verursachte Schwachstelle ist der Bot Fight Mode, der außerhalb der WAF Ruleset Engine läuft, sodass gewöhnliche „Allow“-Regeln ihn nicht erreichen. Liefern Sie jede SEO-relevante Änderung mit aufgezeichneten Versionsmetadaten, einem getesteten Rollback und einer Stop-Bedingung aus – und prüfen Sie anschließend mit der GSC URL Inspection undCF-Cache-Status.
Was dieser Artikel ist (und was nicht)
Dies ist die praxisorientierte, code-nahe Ergänzung zum Edge-SEO-Hub
Hub. Der Hub behandelt die allgemeine Definition, die Plattformvergleichstabelle (Workers,
Akamai, Fastly, Lambda@Edge, Vercel, Netlify), die Entscheidung zwischen Snippets und Workers
sowie die vollständige Erläuterung der Cloaking-Regel. Ich leite hier nichts davon erneut her.
Diese Seite geht speziell bei Cloudflare Workers eine Ebene tiefer – bei der Laufzeit, auf der
auch der eigene Worker dieser Website läuft und die über run_worker_first in wrangler.toml
eingebunden ist – mit echten APIs statt mit vagen Aussagen darüber, dass Edge-Computing Tags
einschleusen kann.
Deutsche Fassung: A note bevor Die code: Google has no Cloudflare-Workers-specific documentation. Die official guidance Das governs Diese (cloaking policy, HTTP Caching, CDN Crawling) ist general und applies to any Edge implementation. I’d rather say Das plainly than imply a Google doc exists Das doesn’t.
Wie ein Worker im Request-/Response-Pfad sitzt
Ein Worker ist ein serverloses Skript, das auf V8-Isolaten läuft. Jede Anfrage, die an ihn geroutet wird,
tritt über einen fetch-Handler ein. Evidence for this claim A Cloudflare Worker receives HTTP requests through a fetch handler. Scope: Cloudflare Workers handlers. Confidence: high · Verified: Cloudflare Workers: Fetch handler „Geroutet“ leistet in diesem Satz echte Arbeit: Ein
Worker sieht nur Anfragen, die seiner konfigurierten
Route oder benutzerdefinierten Domain entsprechen –
alles andere erreicht den fetch-Handler überhaupt nicht. Wenn zwei Routen dieselbe URL bedienen könnten,
hat das spezifischere Muster Vorrang. Bevor Sie also dem Verhalten eines Workers für eine bestimmte URL
vertrauen, bestätigen Sie, dass die Route tatsächlich übereinstimmt, und prüfen Sie, welche ausgerollte
Version auf dieser Route aktiv ist (Wrangler-Umgebungen und schrittweise Ausrollungen bedeuten, dass die
Version, die den Traffic bedient, nicht immer diejenige in Ihrem Editor ist). Im Handler können Sie in
dieser Reihenfolge drei verschiedene Dinge tun:
- Rewrite Die Request bevor it goes to Ihre Origin.
- Rewrite Die Response Header on Die way back out.
- Rewrite Die Response body — via
HTMLRewriter.
Deutsche Fassung: Here’s Die minimal shape:
export default {
async fetch(request, env, ctx) {
// 1. (optionally) inspect/modify the request
const response = await fetch(request); // hit the origin
// 2. rewrite headers
const headers = new Headers(response.headers);
headers.set("X-Robots-Tag", "index, follow");
// 3. rewrite the body with HTMLRewriter (see next section)
return new Response(response.body, { ...response, headers });
},
};Das Team von SALT.agency, das den Begriff „Edge SEO“ auf Grundlage von Recherchen zu Cloudflare Workers geprägt hat, baute seine Werkzeuge als Filterkette auf – einen Anfragefilter, einen Antwortfilter und einen Body-Filter. Das ist dasselbe Muster aus drei Phasen; sie haben es nur benannt. Wenn Sie diese drei Phasen gedanklich getrennt halten, bleibt ein Worker verständlich.
Deutsche Fassung: Rewriting HTML mit HTMLRewriter
Deutsche Fassung: HTMLRewriter ist Cloudflare’s streaming HTML parser, und it’s Die actual API behind every
“inject a tag” trick. Evidence for this claim Cloudflare HTMLRewriter provides selector-based handlers that can transform streamed HTML elements. Scope: Cloudflare Workers HTMLRewriter API. Confidence: high · Verified: Cloudflare Workers: HTMLRewriter Sie register .on(selector, handler) element
handlers, und Die handler gets getAttribute / setAttribute, prepend / append,
setInnerContent, und replace. Because it streams, Sie’re nicht buffering Die whole
document in memory.
Canonical-Tag einfügen oder korrigieren
class CanonicalHandler {
constructor(url) { this.url = url; }
element(el) { el.setAttribute("href", this.url); }
}
const rewriter = new HTMLRewriter()
.on('link[rel="canonical"]', new CanonicalHandler("https://example.com/preferred/"));
return rewriter.transform(response);Deutsche Fassung: If Die Seite has no Canonical at all, Sie attach a handler to head und append one
instead of editing an existing tag. Either way, remember Die lesson von Die
canonicalization side of Diese:
rel=canonical ist a hint, nicht a command — a Worker lets Sie set it consistently across a
whole platform, but Google still decides.
Der oben gezeigte CanonicalHandler setzt voraus, dass bereits ein Tag vorhanden ist und die Response HTML
enthält. Beides ist in der Produktion nicht garantiert; wenn Sie das falsch behandeln, landen auf einer
Seite zwei Canonical-Tags statt eines. Bevor Sie eine solche Umschreibung ausliefern, machen Sie die
Umschreibung idempotent und testen Sie diese auf:
- Kein vorhandener Canonical-Tag – Ihr Handler muss den fehlenden Fall erkennen und einen Tag mit
appendanheadanhängen, statt beilink[rel="canonical"], das nichts findet, stillschweigend nichts zu tun. - Ein bereits vorhandener doppelter oder fehlerhafter Canonical-Tag – entscheiden Sie vor dem Ausrollen, ob Sie das überzählige Tag entfernen oder ob Ihre Umschreibung ein zweites hinzufügt (Letzteres ist ein echter Fehler, kein Randfall – doppelte Canonicals sind ein häufiges, selbst verursachtes Problem).
- Eine nicht-HTML-Response – eine API-Route, ein Bild oder eine Weiterleitungs-Response, die durch denselben Worker läuft, darf überhaupt nicht durch
HTMLRewriterverarbeitet werden; begrenzen Sie die Transformation auf Routen und Inhaltstypen, die Sie tatsächlich geprüft haben. - Die Transformation zweimal auf dieselbe Response anwenden (ein Wiederholungsversuch, ein verschachteltes
fetch) – bestätigen Sie, dass kein zweites Tag angehängt wird.
Hreflang-Alternativen hinzufügen oder korrigieren
gleich mechanism, driven off config. Sie append one link[rel="alternate"] per locale to
head. If Ihre alternates sind per-locale und relational, Das config belongs in D1; if it’s
a flat lookup, KV ist fine. Die point ist Das HTMLRewriter injects them identically für every
requester — Sie’re nicht branching on user agent.
JSON-LD-Strukturdaten einfügen
new HTMLRewriter().on("head", {
element(head) {
head.append(
`<script type="application/ld+json">${JSON.stringify(schema)}</script>`,
{ html: true }
);
},
});CPU-Limits, die im großen Maßstab schmerzen
Einer Aussage eines Wettbewerbers, der ich widersprechen würde, lautet „unter einer Millisekunde, ohne Einschränkungen“. Die eigentliche Obergrenze ist die CPU-Zeit: 10 ms im kostenlosen Tarif, 30 ms im kostenpflichtigen Tarif (die Wartezeit der Wanduhr auf fetch zählt nicht – CPU-Zeit hingegen schon). Bei typischen Umschreibungen werden Sie das nie bemerken. Bei umfangreichen HTMLRewriter-Durchläufen über sehr große Seiten ist es eine echte Einschränkung, um die herum Sie entwerfen müssen, keine Panikmache.
Weiterleitungen am Edge: KV vs. D1 vs. Regeln
I typically prefer to have Weiterleitungen on Die Edge (CDN level) über having them on Die server — it offloads Die Arbeit von Ihre Origin und applies bevor Die Seite ist ever generated. On Cloudflare specifically, in my Ahrefs guide to Weiterleitungen für SEO I laid out Das Sie’ve got several options: single oder bulk Weiterleitungen, Weiterleitung Regeln, Seite Regeln, oder Workers mit key-value pairs — oder a Worker Das modifies Header to add a Weiterleitung.
für a Worker-driven table, KV ist Die natural home: a fast, eventually-consistent key lookup keyed by URL.
export default {
async fetch(request, env) {
const url = new URL(request.url);
const target = await env.REDIRECTS.get(url.pathname); // KV namespace
if (target) return Response.redirect(target, 301);
return fetch(request);
},
};Greifen Sie zu D1, wenn Weiterleitungen relational sind (SQL pro Locale oder Segment, das Sie abfragen möchten). Und erkennen Sie, wann ein Worker überdimensioniert ist: Für eine kleine, statische Menge von Weiterleitungen sind Cloudflares Bulk Redirects oder Redirect Rules einfacher und benötigen überhaupt keinen Code. Schreiben Sie nicht für fünfzig Weiterleitungen eigenhändig einen KV-Worker.
Wählen Sie für eine bestimmte URL einen Besitzer und lassen Sie nicht gleichzeitig eine Worker-Weiterleitung, einen Bulk Redirect, eine Redirect Rule und eine Origin-Weiterleitung auf denselben Pfad wirken – das sind getrennte Systeme, die jeweils auf dieselbe Anfrage reagieren können. Wenn mehr als eines passt, debuggen Sie die Präzedenz statt einer sauberen Weiterleitung. Prüfen Sie vor dem Hinzufügen einer Weiterleitung überall, ob in den anderen Systemen bereits eine für diesen Pfad existiert, und wählen Sie die Schicht anhand der Komplexität des Matchings (einfach 1:1 oder musterbasiert), der Skalierung und der Frage, wer sie beobachten oder zurücknehmen muss – eine Worker-Weiterleitung lebt in Ihrem Code und Ihren Logs; ein Bulk Redirect oder eine Redirect Rule lebt im Dashboard und lässt sich von Nichtentwicklern leichter prüfen oder zurücknehmen.
Caching: drei verschiedene Dinge, ein verwirrender Name
Dieser Abschnitt wird von Wettbewerberseiten übersprungen, und er erzeugt die meiste Verwirrung nach dem Muster: „Warum wurde meine Änderung nicht angezeigt?“ Drei getrennte Schichten teilen sich das Wort Cache:
- Die Workers Cache API –
caches.defaultundcaches.open(). Das ist ein programmierbarer, auf den Worker beschränkter Cache, den Sie im Code lesen und beschreiben. - Der Cloudflare-Edge-Cache – der CDN-Cache, der Ihre Ressourcen ausliefert. Er ist von der Cache API getrennt.
Cache-Controldes Origins – die Header, die Ihr Origin (oder Ihr Worker) setzt und die beide obigen Schichten sowie das Verhalten von Googlebot beeinflussen.
Wenn Sie diese Schichten verwechseln, werden Sie schwören, dass eine Änderung nicht ausgerollt wurde, obwohl sie nur aus einer Schicht ausgeliefert wird, die Sie nicht geleert haben.
When a Änderung genuinely isn’t showing up, don’t guess — diagnose it layer by layer:
- Cache key. What Request attributes determine whether two Requests hit Die gleich cached entry (URL, und sometimes Header oder cookies if Ihre Cache key includes them)? A rewrite Das varies by something nicht in Die Cache key kann serve Die wrong variant.
- Which layer served Die Response. Check
CF-Cache-Status(HIT/MISS/EXPIRED/DYNAMIC) to see whether Die Edge Cache answered at all, oder Die Request reached Ihre Worker. - Location/state. Cloudflare’s Cache ist distributed across data centers — a purge oder a fresh Deployment doesn’t necessarily invalidate every Edge location instantly.
- TTL und Die Regel Das set it. Confirm whether a Cache Regel, a
Cache-ControlHeader von Ihre Origin, oder a Header Ihre Worker itself set ist controlling Die TTL. - Invalidation. Did Sie purge Die specific URL, purge everything, oder rely on TTL expiry?
A Worker-owned Cache API entry (
caches.default) needs its own explicitdelete()— purging Die CDN Cache doesn’t touch it.
Was Googlebot mit ETag / If-None-Match / 304 tut
Wenn Ihr Worker die Response erzeugt oder umschreibt, besitzt er die Cache-Header – das bedeutet, dass Googles HTTP-Caching-Leitfaden vom Dezember 2024 für Sie unmittelbar relevant ist. Google unterstützt heuristisches HTTP-Caching über ETag/If-None-Match und Last-Modified/If-Modified-Since, empfiehlt ETag nachdrücklich, weil es weniger fehleranfällig ist, und sagt: Wenn das ETag des Crawlers übereinstimmt, sollte Ihr Server eine 304 Not Modified-Response ohne Body zurückgeben. Ein Worker, der Responses erzeugt, kann genau das umsetzen: ein ETag berechnen, es mit If-None-Match vergleichen und selbst bei 304 abbrechen – das spart Rechenzeit und liefert Googlebot ein schnelles, cachebares Signal.
Deutsche Fassung: Die max-age recrawl tradeoff
Google sagt außerdem, dass Sie Cache-Control: max-age in Betracht ziehen sollten, damit Crawler entscheiden können, wann sie erneut crawlen. Der Haken bei einem Worker, der HTML umschreibt: Ein aggressives max-age auf einer Seite, deren vom Worker eingefügte Tags gerade geändert wurden, kann Googlebot davon abhalten, das soeben ausgerollte Update zu sehen. Versehen Sie umgeschriebenes HTML nicht mit einer langen Cache-Lebensdauer und vergessen Sie es dann.
Die Cloaking-Grenze bei Workers
Die harte Regel in Workers-Begriffen lautet: Führen Sie für jede anfragende Partei dieselbe Logik aus. Googles Spam-Richtlinie definiert Cloaking als unterschiedliche Inhalte für Nutzende und Suchmaschinen präsentieren, um Rankings zu manipulieren. Der für die Citation verwendete Wortlaut lautet “Cloaking refers to the practice of presenting different content to users and search engines” (Übersetzung) „unterschiedliche Inhalte für Nutzende und Suchmaschinen präsentieren“; die Richtlinie nennt ausdrücklich Text oder Keywords nur dann in eine Seite einfügen, wenn der User-Agent, der die Seite anfordert, eine Suchmaschine und kein menschlicher Besucher ist. Der Anker lautet “Inserting text or keywords into a page only when the user agent that is requesting the page is a search engine, not a human visitor” (Übersetzung) „Text oder Keywords nur dann in eine Seite einfügen, wenn der User-Agent, der die Seite anfordert, eine Suchmaschine und kein menschlicher Besucher ist“.
A couple of clarifications, because people über-correct here:
- Inspecting Die User-Agent isn’t automatically cloaking. Logging bot traffic, oder serving a cached Response faster to any client, ist fine. Die line ist a Inhalt difference by requester identity, done to manipulate rankings.
- Seite-split A/B testing on Workers ist fine. Splitting users by URL und treating every requester Die gleich ist legitimate. Splitting by who’s asking — bot vs. human — ist nicht.
Deutsche Fassung: A worked example of Die safe pattern: Diese Website’s own preview gate ist a Worker Das 404s any
/preview/ path unless a cookie matches a secret. It returns Das 404 to everyone ohne
Die cookie — Googlebot included. Das’s precisely Die safe shape: it isn’t hiding one thing von
bots und showing another to users; it applies one Regel uniformly.
Und verlassen Sie sich nicht auf einen Nur-Bot-Pre-Render-Schritt, selbst wenn Sie ihn sauber auf Workers aufbauen. Google hat dynamisches Rendering als Übergangslösung und keine langfristige Lösung bezeichnet; der zitierte Wortlaut lautet “Dynamic rendering was a workaround and not a long-term solution” (Übersetzung) „eine Übergangslösung und keine langfristige Lösung“; ein Worker, der nur für Bots vor-rendert, übernimmt diese Abwertung.
Wie ein Worker Googlebot versehentlich blockieren oder verlangsamen kann
Deutsche Fassung: Diese ist Die most Workers-specific way to shoot yourself in Die foot, und it’s usually nicht in Ihre Worker code.
Bot Fight Mode läuft außerhalb der Ruleset Engine
Bot Fight Mode (und Super Bot Fight Mode) kann bei legitimen Crawlern, einschließlich Googlebot, Fehlalarme erzeugen. Die Falle: Bot Fight Mode wird in einer separaten Pipeline getrennt von der WAF Ruleset Engine ausgewertet, sodass Ihre gewöhnlichen benutzerdefinierten WAF-Regeln „allow“ oder „skip“ ihn nicht außer Kraft setzen. Wenn Bot Fight Mode Googlebot herausfordert, beheben Sie das nicht mit einer Allow-Regel – Sie müssen den Modus selbst ändern oder deaktivieren. (Prüfen Sie die aktuellen Mechanismen anhand der Cloudflare-Dokumentation zu Bot Fight Mode und Super Bot Fight Mode, bevor Sie sich darauf verlassen – Bot-Produkte ändern sich.)
Das Muster für eine benutzerdefinierte Regel verifizierter Bots
Cloudflare exposes a cf.client.bot field und a
verified-bots allow pattern
so Sie kann permit known-good crawlers in Ihre custom Regeln — useful für Die WAF side, though (per
above) it does nicht reach Bot Fight Mode.
Das CDN selbst ist neutral bis positiv
Um den Mythos klarzustellen: Cloudflare als CDN schadet der SEO nicht. Googles eigene Arbeitsnotiz Crawling December aus dem Jahr 2024 weist darauf hin, dass Google die Crawling-Rate erhöht, wenn es ein CDN erkennt – ein CDN kann Googlebot aber auch versehentlich über WAF-/Bot-Regeln blockieren, und eine 503-Antwort ist besser als eine Bot-Verifizierungszwischenseite. Das Risiko liegt bei einem fehlkonfigurierten Worker oder einer fehlkonfigurierten Bot-Einstellung, nicht bei der Infrastruktur.
Prüfen, was Googlebot tatsächlich erhalten hat
Deutsche Fassung: nach any Worker Deployment, confirm what a crawler actually got — don’t assume:
- GSC URL Inspection → Test Live URL. Ruft die Seite wie Google ab und zeigt das gerenderte HTML, sodass Sie bestätigen können, dass Ihr eingefügter Canonical-/Hreflang-/JSON-LD-Inhalt tatsächlich vorhanden ist.
- Prüfen Sie
CF-Cache-Statuszusammen mit dem HTML.HIT/MISS/EXPIREDzeigt, ob Sie eine frische Worker-Response oder eine gecachte ansehen – der schnellste Weg, eine „Änderung wurde nicht angezeigt“-Meldung zu erkennen, die in Wahrheit ein Problem der Cache-Schicht ist. - Direkt als Googlebot abrufen. Fordern Sie die Seite mit dem Googlebot-User-Agent an und vergleichen Sie die Ergebnisse – denken Sie aber daran, dass die Übereinstimmung der Zeichenfolge nichts über die Identität beweist; verifizieren Sie echten Googlebot mit Reverse- und Forward-DNS anhand der veröffentlichten Bereiche von Google (siehe Tab „Scripts“).
Deployment-Hygiene speziell für Workers
A successful wrangler deploy tells Sie Die script shipped — it doesn’t tell Sie Googlebot ist
getting Die right rendered output. Treat every SEO-affecting Worker Änderung as a release mit a
record, nicht just a push:
- Routen eingrenzen. Lassen Sie einen Worker standardmäßig nicht auf
/*laufen. Stimmen Sie ihn in den Routenmustern vonwrangler.tomlauf die benötigten Pfade ab, damit ein Fehler nicht Ihre gesamte Website lahmlegen kann. - Prüfen Sie aktuelle Limits, bevor Sie Skalierung versprechen. CPU-Zeit, Anzahl der Subrequests und Skriptgrößenlimits unterscheiden sich je nach Tarif und ändern sich im Lauf der Zeit – bestätigen Sie die Werte anhand der aktuellen Limits-Seite von Cloudflare, bevor Sie eine Umschreibung um eine bestimmte Obergrenze herum entwerfen, statt sich auf eine erinnerte Zahl zu verlassen.
- Versionsmetadaten für das Release festhalten. Das Modell für Versionen und Deployments von Cloudflare verfolgt Quellversion, Kompatibilitätsdatum, Bindings und Routen für jedes Deployment – notieren Sie, welche Version auf welcher Route aktiv ist, damit die Behauptung „Der Worker tut X“ gegen das tatsächlich Ausgerollte und nicht gegen Ihren Editor geprüft werden kann.
- Mit Wrangler-Umgebungen versionieren und zurückrollen. Stellen Sie in einer Staging-Umgebung bereit, rollen Sie schrittweise nach Prozentsatz aus und behalten Sie die Möglichkeit, sofort auf die vorherige Version zurückzugehen.
- Eingegrenzte Logs zum Überwachen des Rollouts verwenden – mit Blick auf ihre Grenzen. Cloudflares Workers Logs und Log-Tailing können das Debugging eines schrittweisen Rollouts unterstützen, aber Logs werden stichprobenartig erfasst und nur für ein begrenztes Zeitfenster aufbewahrt – behandeln Sie diese als begrenzten Nachweis für die von ihnen erfassten Anfragen, nicht als vollständige Aufzeichnung jedes Crawler-Besuchs.
- Eine Stop-Bedingung festlegen und den Rollback testen, bevor Sie ihn brauchen. Legen Sie im Voraus fest, welches beobachtete Verhalten (Fehlerrate, eine falsche Response bei einer Stichprobenprüfung, ein Rückgang der Crawling-Rate) den Rollout anhält, und bestätigen Sie, dass der Rückweg tatsächlich funktioniert, statt es anzunehmen.
- Den Cache als Teil des Deployments leeren. Da drei Cache-Schichten beteiligt sind, machen Sie das Leeren/die Invalidierung des Caches zu einem ausdrücklichen Schritt beim Ausrollen einer Umschreibung, nicht zu einem nachträglichen Gedanken.
Eine Bing-Notiz und ein Blick nach vorn
Bing bietet ebenfalls keine Cloudflare-/Edge-spezifischen Hinweise. Da ein Worker-Deployment sofort erfolgt, Crawls aber nicht, ist IndexNow die natürliche Ergänzung – lösen Sie es aus, sobald eine vom Worker gesteuerte Weiterleitungstabelle oder Tag-Änderung ausgerollt wird, damit Bing (und andere teilnehmende Suchmaschinen) zeitnah erneut crawlen. Ebenfalls sehenswert: Cloudflare hat die an der Edge erzwungene Kanonisierung als Produktfunktion („Redirects for AI Training“) ausgeliefert – verifizierte AI-Training-Crawler erhalten mit einem Schalter eine 301-Weiterleitung auf Ihre kanonische URL. Das ist ein nützlicher Kontrast dazu, die Canonical-Logik im eigenen Worker von Hand zu bauen, und eine Erinnerung daran, dass „Crawlern etwas anderes ausliefern als Nutzern“ ein Muster ist, dem Microsoft bei anderen AI-Crawler-Funktionen von Cloudflare öffentlich skeptisch gegenüberstand – ein guter Realitätscheck für jeden bot-bedingten Worker.
für Die broader picture — Die platform comparison, Snippets vs. Workers, Die dev-queue und governance angles — head back to Die Edge SEO hub.
KI-Zusammenfassung
Deutsche Fassung: A condensed take on Die Advanced version:
- Cloudflare-Workers-SEO = technische SEO auf Cloudflares V8-Isolat-Laufzeit. Das ist die code-nahe, Workers-spezifische Umsetzung des allgemeinen Edge-SEO-Konzepts – Definition, Plattformvergleich und ausführliche Cloaking-Erklärung finden Sie im Hub.
- Ein Worker sieht nur, was seine Route matcht. Routen-/Domain-Konfiguration und Präzedenz bestimmen, welche Anfragen den
fetch-Handler überhaupt erreichen – bestätigen Sie Route und ausgerollte Version, bevor Sie dem Verhalten eines Workers für eine URL vertrauen. - Ein
fetch-Handler, drei Phasen: Anfrage umschreiben, Response-Header umschreiben, Response-Body umschreiben. Die Umschreibung des Bodys erfolgt überHTMLRewriter– den eigentlichen Mechanismus, um einen Canonical einzufügen, Hreflang zu korrigieren oder JSON-LD hinzuzufügen. Machen Sie die Umschreibung idempotent und testen Sie die Umschreibung auf fehlende, doppelte, fehlerhafte und nicht-HTML-Responses, nicht nur auf den Idealfall. - Weiterleitungen: KV für schnelle Schlüsselabfragen, D1 für relationale Konfiguration, Bulk Redirects/Rules für kleine statische Mengen. Patrick bevorzugt Weiterleitungen auf Edge-Ebene gegenüber Server-Ebene – wählen Sie aber einen Besitzer pro URL; eine Worker-Weiterleitung, ein Bulk Redirect, eine Redirect Rule und eine Origin-Weiterleitung können alle auf demselben Pfad greifen.
- Drei Caches teilen sich ein Wort: die Workers Cache API (
caches.default), der Cloudflare-Edge-Cache undCache-Controldes Origins – ihre Verwechslung führt zu „meine Änderung wurde nicht angezeigt“. Diagnostizieren Sie das anhand von Cache-Key, Schicht, TTL und Invalidierung, statt zu raten. - Googles ETag-/If-None-Match-/304-Caching-Leitfaden (Dez. 2024) ist direkt umsetzbar: Ein Worker, der die Response besitzt, kann selbst bei 304 abbrechen; ein aggressives
max-agekann jedoch das erneute Crawlen einer gerade geänderten Seite verzögern. - Cloaking-Regel: identische Logik für jede anfragende Partei. Das Prüfen des UA ist nicht automatisch Cloaking; ein Inhaltsunterschied anhand der Identität der anfragenden Partei, um Rankings zu manipulieren, ist es.
- Größtes selbst verursachtes Risiko: Bot Fight Mode läuft außerhalb der WAF Ruleset Engine, sodass normale Allow-Regeln ihn nicht erreichen – Sie müssen den Modus selbst ändern.
- Bewusst ausliefern: Prüfen Sie aktuelle Tariflimits, bevor Sie Skalierung versprechen, halten Sie pro Release Versionsmetadaten (Kompatibilitätsdatum, Bindings, Routen) fest, verwenden Sie eingegrenzte Logs (stichprobenartig, keine vollständige Aufzeichnung), um einen Rollout zu beobachten, und legen Sie eine Stop-Bedingung mit getestetem Rollback fest, bevor Sie die Stop-Bedingung brauchen.
- Überprüfen Sie mit GSC URL Inspection (Test Live URL) und dem
CF-Cache-Status-Header; behalten Sie bei umfangreichen Umschreibungen die CPU-Limits im Blick (10 ms im kostenlosen Tarif / 30 ms im kostenpflichtigen Tarif).
Offizielle Dokumentation
Deutsche Fassung: There ist no Cloudflare-Workers-specific SEO doc von Google oder Bing — Die governing guidance ist general. Die most useful primary sources sind split between Die search engines (policy/Caching) und Cloudflare (Die runtime APIs).
Google (applies to any Edge implementation)
- Spam policies — cloaking — Die hard boundary any Worker logic must respect.
- Crawling December: HTTP Caching (2024) — ETag / If-None-Match / 304 / max-age, directly actionable für a Response-owning Worker.
- Crawling December: CDNs und Crawling (2024) — how a CDN affects Crawling rate und how bot Regeln kann Block Googlebot.
- Dynamic rendering (deprecated) — why a bot-nur pre-render Worker inherits a deprecated pattern.
- Overview of Google crawlers und fetchers — user agents und published IP ranges für verification.
Cloudflare (die Laufzeit)
- HTMLRewriter – die Streaming-HTML-Parser-API.
- Cache API –
caches.default/caches.open(). - Wie der Cache funktioniert – die Cache API im Vergleich zum Edge-Cache.
- Routen und Domains – Routen-Matching, Präzedenz und welche Anfragen tatsächlich einen Worker aufrufen.
- Bulk Redirects – das Weiterleitungssystem ohne Code, mit dem eine Worker-Weiterleitung kollidieren oder sich überschneiden kann.
- Workers-Limits – aktuelle Obergrenzen für CPU, Subrequests und Skriptgröße; abhängig von Tarif und Datum, daher direkt prüfen statt einer erinnerten Zahl zu vertrauen.
- Versionen und Deployments – versionierte und schrittweise Deployments sowie Rollback.
- Workers Logs – Aufrufprotokolle, Log-Tailing sowie Grenzen bei Stichprobe und Aufbewahrung.
- Bot Fight Mode / Super Bot Fight Mode – die Bot-Einstellungen, die Googlebot blockieren können.
- Traffic von verifizierten Bots zulassen – das Muster einer benutzerdefinierten Regel mit
cf.client.bot.
Bing — no Edge/Workers Seite exists; IndexNow ist Die relevant pairing für instant post-Deployment re-Crawling.
Zitate aus den Quellen
Deutsche Fassung: On-Die-record statements. Each Google link ist a deep link Das jumps to Die quoted passage.
Google — Die cloaking boundary
- “Cloaking refers to the practice of presenting different content to users and search engines with the intent to manipulate search rankings and mislead users.” (Übersetzung) „Cloaking bezeichnet das Präsentieren unterschiedlicher Inhalte für Nutzende und Suchmaschinen mit dem Ziel, Suchrankings zu manipulieren und Nutzende irrezuführen.“ — Google Search Central, Spam-Richtlinien für die Google-Websuche. Zum Zitat
- “Inserting text or keywords into a page only when the user agent that is requesting the page is a search engine, not a human visitor” (Übersetzung) „Text oder Keywords nur dann in eine Seite einfügen, wenn der User-Agent, der die Seite anfordert, eine Suchmaschine und kein menschlicher Besucher ist“ – als Beispiel für Cloaking aufgeführt. Zum Zitat
Google – HTTP-Caching (Crawling December, 2024)
- “Google’s crawling infrastructure supports heuristic HTTP caching as defined by the HTTP caching standard, specifically through the ETag response- and If-None-Match request header, and the Last-Modified response- and If-Modified-Since request header.” (Übersetzung) „Googles Crawling-Infrastruktur unterstützt heuristisches HTTP-Caching gemäß dem HTTP-Caching-Standard, insbesondere über den ETag-Response- und den If-None-Match-Request-Header sowie den Last-Modified-Response- und den If-Modified-Since-Request-Header.“ Zum Zitat
- “We strongly recommend using ETag because it’s less prone to errors and mistakes (the value is not structured unlike the Last-Modified value).” (Übersetzung) „Wir empfehlen dringend, ETag zu verwenden, weil es weniger anfällig für Fehler und Irrtümer ist (der Wert ist im Gegensatz zum Last-Modified-Wert nicht strukturiert).“ Zum Zitat
- “If the ETag value sent by the crawler matches the current value the server generated, your server should return an HTTP 304 (Not modified) status code with no HTTP body.” (Übersetzung) „Wenn der vom Crawler gesendete ETag-Wert mit dem aktuellen, vom Server generierten Wert übereinstimmt, sollte Ihr Server einen HTTP-304-Statuscode (Not modified) ohne HTTP-Body zurückgeben.“ Zum Zitat
- “While not required, consider also setting the max-age field of the Cache-Control header to help crawlers determine when to recrawl the specific URL.” (Übersetzung) „Das ist nicht erforderlich, aber Sie sollten auch erwägen, das max-age-Feld des Cache-Control-Headers zu setzen, damit Crawler bestimmen können, wann sie die konkrete URL erneut crawlen.“ Zum Zitat
Google — dynamisches Rendering (veraltet)
- “Dynamic rendering was a workaround and not a long-term solution for problems with JavaScript-generated content in search engines.” (Übersetzung) „Dynamisches Rendering war eine Übergangslösung und keine langfristige Lösung für Probleme mit JavaScript-generierten Inhalten in Suchmaschinen.“ Zum Zitat
Me — on Edge-level Weiterleitungen
- “I typically prefer to have Weiterleitungen on Die Edge (CDN-level) über having them on Die server.” — von my Ahrefs guide, 11 Types of Weiterleitungen & Their SEO Impact. Relayed von my own published article; wording ist mine but confirm Die exact phrasing against Die live Seite bevor treating it as a hard quote.
Cloudflare / SALT.agency — why Workers für Weiterleitungen
- “wir needed to implement simple Weiterleitungen, which sollte sein easy to create on Die majority of platforms but wasn’t supported” — Igor Krestov & Dan Taylor, Diving in technisch SEO Verwendung Cloudflare Workers (Cloudflare blog). Relayed via summarization of Die Cloudflare blog post, nicht confirmed as an exact substring — re-verify against Die live Seite bevor Verwendung as a hard blockquote.
Deutsche Fassung: Note: Die cloaking und dynamic-rendering deep links sind also load-bearing on Diese Website’s Edge SEO hub. Die Google Caching quotes were verified as exact substrings against Die live Seite.
Welches Tool für welche Aufgabe?
“I müssen to add Weiterleitungen.”
- A small, static set (a few dozen, no logic)? → Cloudflare Bulk Weiterleitungen oder Weiterleitung Regeln. No Worker, no code.
- Thousands of URL-keyed Weiterleitungen? → A Worker + KV lookup.
- Relational (per-locale, per-segment, queried) Weiterleitungen? → A Worker + D1.
- müssen to Weiterleitung und rewrite Header in Die gleich pass? → A Worker (Regeln kann’t do both).
“I müssen to inject oder fix a tag (Canonical, Hreflang, title, JSON-LD).”
- → A Worker mit
HTMLRewriter. There’s no no-code Cloudflare product für arbitrary body rewriting; Diese ist Workers’ job.
“Googlebot’s Crawling dropped nach I added Cloudflare.”
- First suspect Bot Fight Mode / Super Bot Fight Mode, nicht Ihre Worker. Check whether it’s challenging Googlebot — und remember a WAF allow-Regel won’t fix it; Sie Änderung Die mode itself.
- Then check WAF custom Regeln und whether a
503/interstitial ist being served to bots. - nur then audit Die Worker code und Route scope.
“My injected tag isn’t showing up.”
- Check
CF-Cache-Status.HIT/EXPIRED? Sie’re seeing a cached Response — purge Die right layer (Workers Cache API vs. Edge Cache) und re-test. MISSund still wrong? Now it’s Ihre Worker logic oder Route scope. Confirm mit GSC URL Inspection.
„Soll ich auf einem Worker nur für Bots vor-rendern?“
- → Nein. Das ist dynamisches Rendering, das Google eingestellt hat. Bevorzugen Sie SSR-/statisches Rendering, das auf alle angewendet wird.
Cloudflare-Workers-SEO-Checkliste
Bevor Sie einen Rewrite-Worker ausliefern
- Die Route ist in
wrangler.tomlauf die benötigten Pfade eingegrenzt – nicht reflexartig auf/*– und Sie haben bestätigt, welche ausgerollte Version auf dieser Route tatsächlich aktiv ist. - Der Worker wendet auf jede anfragende Partei identische Logik an (kein Inhaltszweig für Bot und Mensch).
-
HTMLRewriter-Handler sind idempotent und gegen ein fehlendes Tag, ein vorhandenes doppeltes/fehlerhaftes Tag und eine nicht-HTML-Response getestet – nicht nur den Idealfall. - Für Weiterleitungen haben Sie das richtige Werkzeug gewählt: Bulk Redirects/Rules (klein/statisch), KV (URL-Schlüssel im großen Maßstab) oder D1 (relational) – und bestätigt, dass kein anderes Weiterleitungssystem diese URL bereits besitzt.
- Aktuelle Tariflimits (CPU, Subrequests, Skriptgröße) wurden direkt geprüft, nicht aus dem Gedächtnis übernommen.
-
Cache-Controlfür umgeschriebenes HTML ist nicht so aggressiv, dass das erneute Crawlen geänderter Seiten verzögert wird. - Versionsmetadaten (Kompatibilitätsdatum, Bindings, Routen) sind für das Release festgehalten, einschließlich eines getesteten Rollback-Wegs und einer definierten Stop-Bedingung für den Rollout.
Caching sanity
- Sie know which of Die three layers (Workers Cache API / Edge Cache / Origin
Cache-Control) Sie’re touching. - If Die Worker owns Die Response, it sets a correct
ETagund kann short-circuit to304. - Cache purge/invalidation ist an explicit step in Die Deployment.
Bot access
- Bot Fight Mode / Super Bot Fight Mode isn’t challenging Googlebot (checked directly — a WAF allow-Regel does nicht override it).
- Verified-bots custom Regel (
cf.client.bot) ist in place if Sie gate on Die WAF side. - Bots get a
503, nicht a verification interstitial, when Sie müssen to slow them.
Verify nach Deployment
- GSC URL Inspection → Test Live URL confirms Die injected tag ist in Die rendered HTML.
-
CF-Cache-Statuschecked (HIT/MISS/EXPIRED) so Sie know if Sie’re seeing a cached copy. - IndexNow fired (Bing/others) if a Weiterleitung table oder tag Änderung just shipped.
- Versioned via Wrangler environments mit a tested rollback path.
Die Denkmodelle
1. One handler, three phases.
Every Worker ist a fetch handler, und everything Sie do lives in one of three phases in order:
rewrite Die Request → rewrite Die Response Header → rewrite Die Response body
(HTMLRewriter). Locate what Sie’re changing in Das sequence bevor Sie write a line.
2. „Cache“ besteht aus drei Dingen, nicht aus einem.
Workers Cache API (caches.default) ≠ Cloudflare-Edge-Cache ≠ Cache-Control des Origins. Wenn eine Änderung „nicht angezeigt wird“, fragen Sie sich, welche Schicht Sie tatsächlich betrachten, bevor Sie den Code anfassen.
3. Die cloaking test: identity vs. logic. Branching on who’s asking to Änderung Inhalt = cloaking. Applying Die gleich logic to everyone — even if Das logic inspects Die UA für logging oder speed — ist fine. Ask: “would a real user get exactly what Googlebot got?”
4. Die blame order für a Crawling drop. Bot Fight Mode → WAF Regeln → Worker code → Route scope. Die bot settings run on a pipeline Ihre allow Regeln don’t reach, so suspect them first.
5. Die Worker owns Die Response — so it owns Caching semantics.
If Ihre Worker generates oder rewrites Die body, it’s responsible für ETag, 304, und max-age.
Das’s a capability (short-circuit a 304 yourself) und a liability (über-Cache und delay recrawl).
Cloudflare Workers SEO — Spickzettel
Pick Die Weiterleitung Tool
| Situation | verwenden |
|---|---|
| A few dozen static Weiterleitungen | Bulk Weiterleitungen / Weiterleitung Regeln (no code) |
| Thousands, keyed by URL | Worker + KV |
| Relational / per-locale, queried | Worker + D1 |
| Weiterleitung und rewrite Header together | Worker |
Die three Caches
| Layer | What it ist | Sie touch it via |
|---|---|---|
| Workers Cache API | Programmable, Worker-scoped | caches.default, caches.open() |
| Cloudflare Edge Cache | Die CDN Cache | Cache Regeln / purge |
Origin Cache-Control | Response Header | Ihre Origin oder Ihre Worker |
HTMLRewriter handler API
getAttribute/setAttribute— read/set a tag attribute (e.g., Canonicalhref)prepend/append— add markup inside an element (e.g., a tag inhead)setInnerContent— replace an element’s contentsreplace— swap Die element entirely
Fast facts
- CPU limit: 10 ms kostenlos / 30 ms paid (wall-clock
fetchwaits don’t count). - Cloaking = Inhalt difference by requester identity to manipulate rankings — nicht “Die Worker read Die UA.”
- Bot Fight Mode runs outside Die WAF Ruleset Engine — allow-Regeln don’t reach it; Änderung Die mode.
- Verify a Worker Änderung: GSC Test Live URL +
CF-Cache-StatusHeader. - Google recommends
ETag; matching ETag → return 304 mit no body.
Prüfen, was Googlebot nach einem Worker-Deployment tatsächlich erhalten hat
Als Googlebot abrufen und vergleichen (Shell)
# Fetch as a normal browser
curl -sS -A "Mozilla/5.0" https://example.com/page/ -o user.html -D user.headers
# Fetch as Googlebot's UA
curl -sS -A "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" \
https://example.com/page/ -o bot.html -D bot.headers
# The bodies should be identical — a diff is a cloaking red flag
diff user.html bot.html && echo "identical (good)"
# Check what cache layer served it
grep -i "cf-cache-status" bot.headers # HIT / MISS / EXPIREDEchten Googlebot bestätigen (User-Agents sind leicht zu fälschen) – Reverse- und Forward-DNS
# 1) Reverse DNS the IP from your logs — must end in googlebot.com / google.com
host 66.249.66.1
# 2) Forward DNS that hostname back — must resolve to the same IP
host crawl-66-249-66-1.googlebot.comWenn eine der beiden Prüfungen fehlschlägt, handelt es sich nicht um Googlebot. Sie können die Anfrage außerdem mit den veröffentlichten Bereichen der googlebot.json von Google abgleichen.
Eingefügte Tags aus dem gerenderten HTML auslesen (DevTools-Konsole)
// Paste into the browser console on the live page to confirm your Worker's injection
[...document.querySelectorAll('link[rel="canonical"]')].map(l => l.href);
[...document.querySelectorAll('link[rel="alternate"][hreflang]')]
.map(l => `${l.hreflang} -> ${l.href}`);
[...document.querySelectorAll('script[type="application/ld+json"]')].map(s => s.textContent);Minimaler ETag-/304-Kurzschluss in einem Worker
export default {
async fetch(request, env, ctx) {
const res = await fetch(request);
const body = await res.text();
const etag = `"${await sha1(body)}"`; // your hash of choice
if (request.headers.get("If-None-Match") === etag) {
return new Response(null, { status: 304 }); // no body, per Google's guidance
}
const headers = new Headers(res.headers);
headers.set("ETag", etag);
return new Response(body, { ...res, headers });
},
}; Tools zum Aufbau und zur Prüfung von Workers-SEO
- Wrangler — Cloudflare’s CLI für developing, versioning, und deploying Workers (Route scoping, environments, rollback, secrets). Diese ist where Deployment hygiene lives.
- HTMLRewriter — Die built-in streaming HTML parser; Die API für all body rewriting.
- Workers KV / D1 — Die storage für Weiterleitung tables und config (KV für key lookups, D1 für SQL).
- GSC URL Inspection → Test Live URL — fetches und renders Die Seite as Google so Sie kann confirm an injected Canonical/Hreflang/JSON-LD actually landed.
CF-Cache-StatusHeader (viacurl -Ioder DevTools Network) — tells SieHIT/MISS/EXPIREDso Sie know whether Sie’re looking at a cached copy oder a fresh Worker Response.- IndexNow — ping Bing und other participating engines Die instant a Worker-driven Änderung ships.
- Server log analysis — Die ground truth für whether real (verified) Googlebot ist reaching Ihre Worker’s Routen at all.
Einen Worker auf SEO-Konsistenz und Cache-Verhalten prüfen
Review this Cloudflare Worker fetch handler as an SEO edge change. Trace the request,
response-header, body-rewrite, redirect, and caching paths. Return:
1. Every branch based on user agent, bot status, cookie, geography, or request header
2. Whether Googlebot/no-cookie traffic can receive different indexable content or SEO tags
3. HTMLRewriter selectors that fail when a tag is missing or create duplicates
4. Redirect lookups that can chain, loop, or fall through unexpectedly
5. Each use of the Cache API, Cloudflare edge cache behavior, and origin Cache-Control—kept as separate layers
6. Cache keys that could mix variants or preserve a stale canonical/robots/header change
7. A minimal test matrix for users, verified bots, cache hit/miss, and representative URLs
Apply the same content and SEO logic to bots and users. Flag intentional personalization
for human review rather than calling it cloaking automatically. Do not invent Cloudflare
settings, bindings, routes, cache rules, or origin behavior that are not in my input.
Worker code, bindings, routes, and relevant cache/security configuration:
[PASTE INPUT]Eine HTMLRewriter-Änderung vor dem Deployment prüfen
Audit this HTMLRewriter implementation for one SEO task: [CANONICAL / HREFLANG / JSON-LD].
Check whether it handles existing, missing, and duplicate elements; produces valid absolute
URLs or JSON; applies to the intended route cohort; and behaves identically for every
requester. Then return corrected code plus raw-response and rendered-response tests.
Do not add product, organization, locale, URL, or schema facts that are not supplied.
Code and expected per-route output:
[PASTE INPUT] Testen Sie sich selbst: Cloudflare Workers SEO
Five quick questions on doing technisch SEO mit Cloudflare Workers. Pick an answer für each, then check.
Ressourcen, die Ihre Zeit wert sind
My related writing
- 11 Types of Weiterleitungen & Their SEO Impact (Ahrefs) — Die Weiterleitung options on Cloudflare, und why I prefer Edge-level Weiterleitungen über server-level.
- Die Beginner’s Guide to technisch SEO (Ahrefs) — where Edge Änderungen fit in Die wider picture.
- JavaScript SEO Issues & Best Practices (Ahrefs) — Die rendering side, relevant to any pre-render-on-Die-Edge temptation.
My speaking
- Fine-Tune Ihre technisch SEO, Seite Speed, und Sicherheit (Marketing Speak interview) — where I walk through Verwendung Cloudflare Workers to rewrite bevor Die user ever sees Die Seite, und offloading Weiterleitungen to Die CDN. Spoken-word interview transcript; treat specific phrasings as paraphrase rather than exact quotes.
Aus der Branche
- Einblicke in technische SEO mit Cloudflare Workers – Igor Krestov (SALT.agency) und Dan Taylor im Cloudflare-Blog; Ursprung des Filterkettenmusters (Anfrage/Response/Body).
- Was ist Edge SEO? (Search Engine Land) – das Konzept, das der übergeordnete Hub dieses Artikels in Drittanbieterform behandelt.
- Edge SEO (Dan Taylor) – vom Begründer des Begriffs auf Grundlage von Recherchen zu Cloudflare Workers.
- HTMLRewriter (Cloudflare-Dokumentation) – die maßgebliche Referenz für die API zur Umschreibung des Bodys.
- Wie der Cache funktioniert (Cloudflare-Dokumentation) – entwirrt Cache API und Edge-Cache.
- Redirects for AI Training (Cloudflare-Blog) – an der Edge erzwungene Kanonisierung als Produktfunktion, ein nützlicher Kontrast zur manuellen Umsetzung im Worker.
Go deeper / sideways
- Edge SEO — Die parent hub: general concept, platform comparison, Snippets vs. Workers, Die cloaking Regel in full.
Änderungsprotokoll
Aktualisiert am 9. Aug. 2026.
Redaktionelle Zusammenfassung und aufgezeichnete Änderungsdetails.Änderungsdetails
-
Detaillierte Änderungsangaben sind derzeit auf Englisch verfügbar.
Vollständiger Vergleich nicht verfügbar — für diese Version wurde kein früherer Schnappschuss archiviert.
Aktualisiert am 9. Aug. 2026.
Redaktionelle Zusammenfassung und aufgezeichnete Änderungsdetails.Änderungsdetails
-
Detaillierte Änderungsangaben sind derzeit auf Englisch verfügbar.
Vollständiger Vergleich nicht verfügbar — für diese Version wurde kein früherer Schnappschuss archiviert.
Aktualisiert am 9. Aug. 2026.
Redaktionelle Zusammenfassung und aufgezeichnete Änderungsdetails.Änderungsdetails
-
Detaillierte Änderungsangaben sind derzeit auf Englisch verfügbar.
Vollständiger Vergleich nicht verfügbar — für diese Version wurde kein früherer Schnappschuss archiviert.
Aktualisiert am 9. Aug. 2026.
Redaktionelle Zusammenfassung und aufgezeichnete Änderungsdetails.Änderungsdetails
-
Detaillierte Änderungsangaben sind derzeit auf Englisch verfügbar.
Vollständiger Vergleich nicht verfügbar — für diese Version wurde kein früherer Schnappschuss archiviert.
Aktualisiert am 9. Aug. 2026.
Redaktionelle Zusammenfassung und aufgezeichnete Änderungsdetails.Änderungsdetails
-
Detaillierte Änderungsangaben sind derzeit auf Englisch verfügbar.
Vollständiger Vergleich nicht verfügbar — für diese Version wurde kein früherer Schnappschuss archiviert.
Aktualisiert am 9. Aug. 2026.
Redaktionelle Zusammenfassung und aufgezeichnete Änderungsdetails.Änderungsdetails
-
Detaillierte Änderungsangaben sind derzeit auf Englisch verfügbar.
Vollständiger Vergleich nicht verfügbar — für diese Version wurde kein früherer Schnappschuss archiviert.
Aktualisiert am 9. Aug. 2026.
Redaktionelle Zusammenfassung und aufgezeichnete Änderungsdetails.Änderungsdetails
-
Detaillierte Änderungsangaben sind derzeit auf Englisch verfügbar.
Vollständiger Vergleich nicht verfügbar — für diese Version wurde kein früherer Schnappschuss archiviert.
Aktualisiert am 9. Aug. 2026.
Redaktionelle Zusammenfassung und aufgezeichnete Änderungsdetails.Änderungsdetails
-
Detaillierte Änderungsangaben sind derzeit auf Englisch verfügbar.
Vollständiger Vergleich nicht verfügbar — für diese Version wurde kein früherer Schnappschuss archiviert.
Aktualisiert am 9. Aug. 2026.
Redaktionelle Zusammenfassung und aufgezeichnete Änderungsdetails.Änderungsdetails
-
Detaillierte Änderungsangaben sind derzeit auf Englisch verfügbar.
Vollständiger Vergleich nicht verfügbar — für diese Version wurde kein früherer Schnappschuss archiviert.
Aktualisiert am 9. Aug. 2026.
Redaktionelle Zusammenfassung und aufgezeichnete Änderungsdetails.Änderungsdetails
-
Detaillierte Änderungsangaben sind derzeit auf Englisch verfügbar.
Vollständiger Vergleich nicht verfügbar — für diese Version wurde kein früherer Schnappschuss archiviert.
Aktualisiert am 9. Aug. 2026.
Redaktionelle Zusammenfassung und aufgezeichnete Änderungsdetails.Änderungsdetails
-
Detaillierte Änderungsangaben sind derzeit auf Englisch verfügbar.
Vollständiger Vergleich nicht verfügbar — für diese Version wurde kein früherer Schnappschuss archiviert.
Aktualisiert am 9. Aug. 2026.
Redaktionelle Zusammenfassung und aufgezeichnete Änderungsdetails.Änderungsdetails
-
Detaillierte Änderungsangaben sind derzeit auf Englisch verfügbar.
Vollständiger Vergleich nicht verfügbar — für diese Version wurde kein früherer Schnappschuss archiviert.
Aktualisiert am 9. Aug. 2026.
Redaktionelle Zusammenfassung und aufgezeichnete Änderungsdetails.Änderungsdetails
-
Detaillierte Änderungsangaben sind derzeit auf Englisch verfügbar.
Vollständiger Vergleich nicht verfügbar — für diese Version wurde kein früherer Schnappschuss archiviert.
Aktualisiert am 18. Juli 2026.
Redaktionelle Zusammenfassung und aufgezeichnete Änderungsdetails.Änderungsdetails
-
Detaillierte Änderungsangaben sind derzeit auf Englisch verfügbar.
-
Detaillierte Änderungsangaben sind derzeit auf Englisch verfügbar.
Vollständiger Vergleich nicht verfügbar — für diese Version wurde kein früherer Schnappschuss archiviert.