Guide SEO de Cloudflare Workers
Mettre en œuvre le SEO technique avec Cloudflare Workers : gestionnaire fetch, injections HTMLRewriter, redirections KV, couches de cache, cloaking et risques de Bot Fight Mode pour Googlebot.
Langues
1 indice probant sur cette page
- Données sources liéesgooglebot.json
Cloudflare Workers permet de modifier requêtes, en-têtes et HTML au niveau edge. HTMLRewriter doit rester idempotent ; KV, D1 ou Rules gèrent les redirections selon leur complexité. Distinguez API Cache, cache edge et Cache-Control. Appliquez une logique identique à Googlebot et aux visiteurs, surveillez Bot Fight Mode, puis vérifiez chaque livraison avec l’inspection d’URL et CF-Cache-Status.
En bref — Cloudflare Workers exécute de petits programmes sur le réseau Cloudflare, devant le serveur d’origine. Un Worker peut ajouter une redirection, corriger une balise meta ou injecter un canonique sans modifier le CMS. C’est la mise en pratique d’Edge SEO propre à Workers. Une règle ne change jamais : appliquez la même transformation à Google et aux visiteurs. Montrer autre chose à Google constitue du cloaking.
Définition simple d’un Cloudflare Worker
Sur un site Cloudflare, chaque requête d’un visiteur ou de Googlebot traverse le réseau Cloudflare avant le serveur. Un Worker est un petit script exécuté à cet endroit ; il voit la requête entrante et la réponse sortante, et peut modifier l’une ou l’autre. 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
L’intérêt SEO est de corriger des pages impossibles à modifier directement. Sur une plateforme verrouillée ou en attendant un développement, un Worker peut ajouter un canonique en quelques minutes, sans déploiement du site.
Usages SEO des Workers
- Redirections : déplacer au niveau edge une ou des milliers d’URL.
- Balises : injecter un canonique, corriger un titre, ajouter hreflang ou des données structurées.
- En-têtes : ajouter ou corriger par exemple
X-Robots-Tag.
La règle à ne pas enfreindre
Le Worker doit agir de la même manière pour tout le monde. Fournir à Googlebot une page différente de celle des visiteurs afin de manipuler le classement est du cloaking, contraire aux règles Google. 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 Appliquez donc la même logique à chaque requête, quel qu’en soit l’auteur.
Deux façons de se nuire
La plupart des récits où Cloudflare aurait nui au SEO ne viennent pas du code Worker :
- Blocage des robots. Bot Fight Mode peut bloquer ou défier Googlebot. Si Google ne récupère pas la page, le reste ne compte plus.
- Confusion des caches. Cloudflare possède plusieurs couches ; toucher la mauvaise peut faire croire qu’une modification n’a pas été déployée.
Pour le code réel — gestionnaire fetch, HTMLRewriter, table de redirections KV — et les détails de cache
ou de robots, passez à l’onglet Avancé.
En bref — Un Worker ne voit que les requêtes correspondant à sa route. Son gestionnaire
fetchpeut successivement réécrire la requête, les en-têtes de réponse et le corps viaHTMLRewriter. Toute injection doit être idempotente et testée sur les réponses absentes, dupliquées et non HTML. Pour les redirections, KV convient aux recherches rapides et D1 aux relations ; Rules ou Bulk Redirects suffisent aux petits jeux. Donnez un seul propriétaire à chaque URL. Distinguez l’API Cache Workers, le cache edge etCache-Controld’origine ; diagnostiquez clé, couche, TTL et invalidation. Les recommandations Google sur ETag, If-None-Match et les réponses 304 sont directement applicables. Servez la même logique à tous. Bot Fight Mode échappe au moteur de règles WAF, donc une règle d’autorisation classique ne le neutralise pas. Livrez chaque changement avec version, retour arrière et condition d’arrêt, puis vérifiez avec l’inspection d’URL etCF-Cache-Status.
Portée de cet article
Ce guide pratique complète le dossier Edge SEO, qui couvre définition générale,
comparaison des plateformes, choix Snippets ou Workers et cloaking. Ici, nous approfondissons Cloudflare
Workers, environnement utilisé par ce site via run_worker_first dans wrangler.toml, avec ses API réelles.
Google ne publie aucune documentation propre à Cloudflare Workers. Ses règles sur le cloaking, le cache HTTP et l’exploration des CDN sont générales et s’appliquent à toute mise en œuvre edge.
Place du Worker dans le trajet requête-réponse
Cloudflare exécute chaque Worker comme script serverless dans l’isolate V8. Toute requête couverte rejoint le
gestionnaire fetch. 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 Seules les URL correspondant
à la route ou au domaine personnalisé
l’atteignent. Le motif le plus précis prime lors d’un chevauchement. Vérifiez la route et la version active :
les environnements Wrangler et les déploiements progressifs peuvent différer du code affiché. Le gestionnaire
effectue trois opérations distinctes :
- Réécrire la requête avant l’origine.
- Réécrire les en-têtes de réponse au retour.
- Réécrire le corps avec
HTMLRewriter.
Forme minimale :
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 });
},
};SALT.agency, à l’origine du terme Edge SEO dans ses recherches sur Workers, organise ses outils en trois filtres : requête, réponse et corps. Séparer mentalement ces phases maintient le code lisible.
Réécrire le HTML avec HTMLRewriter
HTMLRewriter est l’analyseur HTML en flux de Cloudflare, au cœur des injections de balises. 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 On associe .on(selector, handler) à un gestionnaire disposant de getAttribute, setAttribute, prepend, append, setInnerContent et replace. Le flux évite de charger tout le document en mémoire.
Injecter ou corriger un canonique
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);Si aucun canonique n’existe, associez un gestionnaire à head et utilisez append. Dans tous les cas,
rel=canonical reste un indice, pas une commande : le Worker l’harmonise, mais Google décide encore. Voir la
canonisation. Une balise link[rel="canonical"]
doit rester exacte et unique.
CanonicalHandler suppose à tort que la balise existe et que la réponse est HTML. Une réécriture de production
doit être idempotente et couvrir :
- Canonique absent : détecter le cas et l’ajouter à
head. - Canonique dupliqué ou mal formé : retirer l’intrus au lieu d’en créer un second.
- Réponse non HTML : ne pas transmettre API, image ou redirection à
HTMLRewriter. - Transformation exécutée deux fois : un nouvel essai ou
fetchimbriqué ne doit pas ajouter une seconde balise.
Ajouter ou corriger les variantes hreflang
Le mécanisme est identique et piloté par la configuration : ajoutez un link[rel="alternate"] par langue dans
head. D1 convient aux relations entre langues ; KV à une table plate. L’injection doit rester identique pour
tous les demandeurs, sans branchement sur User-Agent.
Injecter des données structurées JSON-LD
new HTMLRewriter().on("head", {
element(head) {
head.append(
`<script type="application/ld+json">${JSON.stringify(schema)}</script>`,
{ html: true }
);
},
});Limites CPU à grande échelle
Contrairement à la promesse « moins d’une milliseconde sans contrainte », la limite réelle est le CPU :
10 ms sur l’offre gratuite et 30 ms sur l’offre payante. L’attente de fetch ne compte pas, le calcul oui.
Une réécriture courante reste légère, mais les gros passages HTMLRewriter doivent intégrer cette contrainte.
Redirections edge : KV, D1 ou Rules
Je préfère généralement les redirections au niveau CDN : elles déchargent l’origine et s’appliquent avant la génération. Dans mon guide Ahrefs des redirections SEO, j’énumère redirections unitaires ou en masse, Redirect Rules, Page Rules, Workers avec paires clé-valeur ou modification d’en-têtes.
Pour une table pilotée par Worker, KV constitue le choix naturel : recherche rapide, cohérence éventuelle et clé 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);
},
};Choisissez D1 pour des relations SQL par langue ou segment. Pour quelques redirections statiques, Bulk Redirects ou Redirect Rules sont plus simples. Un Worker KV pour cinquante lignes serait superflu.
Attribuez un seul propriétaire à chaque URL. Worker, Bulk Redirect, Redirect Rule et origine peuvent tous s’appliquer au même chemin, rendant l’ordre difficile à déboguer. Recherchez d’abord les règles existantes, puis choisissez selon complexité, volume et responsable du suivi ou du retour arrière. Le Worker vit dans le code et les journaux ; les règles du tableau de bord sont plus faciles à examiner sans développement.
Cache : trois réalités sous un même nom
C’est la principale source de « ma modification n’apparaît pas ». Trois couches distinctes sont appelées cache :
- API Cache Workers :
caches.defaultetcaches.open(), cache programmable du Worker. - Cache edge Cloudflare : cache CDN qui sert les ressources, distinct de l’API Cache.
Cache-Controld’origine : en-têtes de l’origine ou du Worker influençant les deux couches et Googlebot.
Les confondre fait prendre une réponse ancienne pour un échec de déploiement.
Si une modification n’apparaît pas, diagnostiquez chaque couche :
- Clé de cache. Identifiez URL, en-têtes ou cookies qui distinguent les entrées. Une variante non incluse dans la clé peut servir la mauvaise réponse.
- Couche ayant répondu. Consultez
CF-Cache-Status:HIT,MISS,EXPIREDouDYNAMIC. - Emplacement et état. Le cache est distribué ; purge et déploiement n’atteignent pas toujours tout instantanément.
- TTL et règle responsable. Distinguez Cache Rule,
Cache-Controld’origine et en-tête Worker. - Invalidation. Une entrée
caches.defaultexige son propredelete(); purger le CDN ne la supprime pas.
Comportement de Googlebot avec ETag, If-None-Match et 304
Quand le Worker produit ou réécrit la réponse, il contrôle les en-têtes. Publiées en décembre 2024, les recommandations Google
s’appliquent au cache heuristique avec ETag/If-None-Match et Last-Modified/If-Modified-Since.
Google recommande fortement ETag.
Si l’ETag correspond, renvoyez 304 Not Modified sans corps. Le Worker peut calculer l’ETag, le comparer à
If-None-Match et répondre directement en 304, économisant du calcul.
Compromis de réexploration avec max-age
Google conseille aussi Cache-Control: max-age pour guider la réexploration. Sur un HTML réécrit, une valeur
agressive peut retarder la découverte des balises tout juste modifiées. N’appliquez pas une longue durée sans suivi.
Frontière du cloaking appliquée aux Workers
Règle absolue : exécutez la même logique pour tous. Google définit le cloaking comme la présentation de contenus différents aux utilisateurs et aux moteurs pour manipuler les classements, notamment l’insertion de texte seulement pour le robot.
Deux précisions évitent de surcorriger :
- Lire User-Agent n’est pas automatiquement du cloaking. Journaliser les robots ou accélérer une réponse mise en cache reste légitime. Le problème est une différence de contenu selon l’identité visant le classement.
- Un test A/B réparti par page est acceptable. Traitez chaque demandeur de la même manière ; ne séparez pas robot et humain.
Le portail d’aperçu de ce site illustre le bon modèle : le Worker renvoie 404 pour /preview/ sans cookie secret,
à tout le monde, Googlebot compris. Une règle uniforme ne cache pas aux robots ce qu’elle montre aux humains.
N’utilisez pas un prérendu réservé aux robots. Google qualifie le rendu dynamique de solution de contournement, pas de solution durable.
Comment un Worker peut bloquer ou ralentir Googlebot
C’est le piège le plus propre aux Workers, et il se situe généralement hors de votre code.
Bot Fight Mode échappe au moteur de règles
Bot Fight Mode et Super Bot Fight Mode peuvent produire des faux positifs, y compris contre Googlebot. Ils s’exécutent dans un pipeline distinct du moteur WAF : une règle personnalisée « allow » ou « skip » ne les neutralise pas. Pour arrêter un défi contre Googlebot, modifiez ou désactivez le mode lui-même. Vérifiez les mécanismes actuels dans les documentations Bot Fight Mode et Super Bot Fight Mode.
Modèle de règle pour les robots vérifiés
Cloudflare expose cf.client.bot et un modèle d’autorisation des robots vérifiés.
Il autorise les robots connus dans les règles personnalisées WAF, mais n’atteint pas Bot Fight Mode.
Le CDN lui-même est neutre ou positif
Cloudflare en tant que CDN ne nuit pas au SEO. Le dossier Google 2024
Crawling December indique que le
taux d’exploration augmente lorsqu’un CDN est détecté, tout en avertissant qu’un WAF peut bloquer Googlebot et
qu’un 503 vaut mieux qu’un interstitiel de vérification. Le risque vient d’un réglage, pas de l’infrastructure.
Vérifier ce que Googlebot a réellement reçu
Après tout déploiement, contrôlez la réponse du robot :
- Inspection d’URL GSC → Tester l’URL en direct. Vérifiez dans le HTML rendu canonique, hreflang et JSON-LD.
CF-Cache-Statusavec le HTML.HIT,MISSouEXPIREDrévèle si la réponse vient du cache.- Récupération avec User-Agent Googlebot. Comparez, mais vérifiez l’identité réelle par DNS inverse puis direct et plages publiées ; la chaîne User-Agent ne prouve rien.
Hygiène de déploiement propre aux Workers
Un wrangler deploy réussi prouve que le script est livré, pas que Googlebot reçoit la bonne sortie. Traitez
tout changement SEO comme une livraison enregistrée :
- Limitez les routes. N’utilisez pas
/*par réflexe ; ciblez les chemins danswrangler.toml. - Vérifiez les limites actuelles. CPU, sous-requêtes et taille varient par offre ; consultez la page des limites.
- Consignez la version. Le modèle versions et déploiements suit source, date de compatibilité, liaisons et routes. Notez la version réellement active.
- Versionnez et prévoyez le retour arrière. Testez en préproduction, déployez progressivement et gardez la version précédente.
- Utilisez des journaux ciblés. Workers Logs aide au diagnostic, mais l’échantillonnage et la rétention limitée n’en font pas un registre complet.
- Définissez une condition d’arrêt et testez le retour arrière avant l’incident.
- Purgez les caches dans le déploiement, explicitement pour chaque couche concernée.
Note sur Bing et perspective
Bing ne publie pas non plus de guide propre au edge. Comme le déploiement est instantané et l’exploration non, IndexNow convient après une table de redirections ou une modification de balises. Cloudflare propose aussi « Redirects for AI Training », qui redirige les robots d’entraînement vérifiés vers le canonique. Ce contraste rappelle de vérifier tout traitement conditionné au robot.
Pour les comparaisons de plateformes, Snippets, gouvernance et file de développement, revenez au guide Edge SEO.
Résumé par l’IA
Version condensée de l’onglet Avancé :
- Cloudflare Workers SEO applique le SEO technique dans les isolates V8 de Cloudflare ; le guide Edge SEO couvre le concept général.
- Le Worker ne voit que sa route. Vérifiez configuration, priorité et version déployée.
- Trois phases dans
fetch: requête, en-têtes, puis corps viaHTMLRewriter. Rendez les transformations idempotentes et testez absences, doublons, erreurs et réponses non HTML. - Redirections : KV pour les clés URL, D1 pour les relations, Rules ou Bulk Redirects pour un petit jeu. Un seul système doit posséder chaque URL.
- Trois caches : API Cache avec
caches.default, cache edge etCache-Controld’origine. Diagnostiquez clé, couche, TTL et invalidation. - ETag, If-None-Match et 304 sont directement exploitables ; un
max-ageagressif peut retarder la réexploration. - Cloaking : même logique pour tous. Lire User-Agent n’est pas fautif ; modifier le contenu selon l’identité pour le classement l’est.
- Risque majeur : Bot Fight Mode fonctionne hors du moteur WAF et ignore les règles d’autorisation ordinaires.
- Livraison : vérifiez les limites, consignez version et liaisons, utilisez les journaux avec leurs limites, fixez une condition d’arrêt et testez le retour arrière.
- Vérification : inspection d’URL GSC,
CF-Cache-Statuset limites CPU de 10 ms gratuite ou 30 ms payante.
Documentation officielle
Google et Bing ne publient aucun guide SEO propre à Workers. Les sources primaires se partagent entre règles des moteurs et API Cloudflare.
Google, valable pour tout edge
- Règles antispam — cloaking.
- Crawling December : cache HTTP — ETag, If-None-Match, 304 et max-age.
- Crawling December : CDN — effet sur l’exploration et blocages des robots.
- Rendu dynamique, obsolète.
- Robots et récupérateurs Google — User-Agent et plages IP.
Cloudflare, environnement d’exécution
- HTMLRewriter — analyseur HTML en flux.
- API Cache —
caches.defaultetcaches.open(). - Fonctionnement du cache — API Cache et cache edge.
- Routes et domaines — correspondance et priorité.
- Bulk Redirects — redirections sans code.
- Limites Workers — CPU, sous-requêtes et taille.
- Versions et déploiements — versions, progressivité et retour arrière.
- Workers Logs — journaux, suivi et limites.
- Bot Fight Mode / Super Bot Fight Mode.
- Autoriser les robots vérifiés — modèle
cf.client.bot.
Bing — pas de page propre à Workers ; IndexNow convient à la réexploration après déploiement.
Citations des sources
Déclarations publiques ; chaque lien Google mène au passage cité.
Google — frontière du cloaking
- “Cloaking refers to the practice of presenting different content to users and search engines with the intent to manipulate search rankings and mislead users.” (traduction) « Le cloaking consiste à présenter des contenus différents aux utilisateurs et aux moteurs afin de manipuler le classement et tromper les utilisateurs. » — Google Search Central, règles antispam. Accéder à la citation
- “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” (traduction) « Insérer du texte ou des mots-clés seulement lorsque le demandeur est un moteur et non un visiteur humain » — exemple de cloaking. Accéder à la citation
Google — cache HTTP, 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.” (traduction) « L’infrastructure d’exploration Google prend en charge le cache HTTP heuristique au moyen d’ETag, If-None-Match, Last-Modified et If-Modified-Since. » Accéder à la citation
- “We strongly recommend using ETag because it’s less prone to errors and mistakes (the value is not structured unlike the Last-Modified value).” (traduction) « Nous recommandons fortement ETag, moins sujet aux erreurs que Last-Modified. » Accéder à la citation
- “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.” (traduction) « Si l’ETag du robot correspond, le serveur doit répondre HTTP 304 sans corps. » Accéder à la citation
- “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.” (traduction) « Sans obligation, envisagez max-age dans Cache-Control pour aider les robots à décider quand réexplorer l’URL. » Accéder à la citation
Google — rendu dynamique obsolète
- “Dynamic rendering was a workaround and not a long-term solution for problems with JavaScript-generated content in search engines.” (traduction) « Le rendu dynamique était un contournement, pas une solution durable aux problèmes du contenu JavaScript dans les moteurs. » Accéder à la citation
Moi — redirections au niveau edge
- “I typically prefer to have redirects on the edge (CDN-level) over having them on the server.” (traduction) « Je préfère généralement placer les redirections au niveau edge, ou CDN, plutôt que sur le serveur. » — mon guide Ahrefs 11 Types of Redirects & Their SEO Impact. Formulation tirée de mon article ; vérifiez-la sur la page en ligne avant de la traiter comme citation ferme.
Cloudflare / SALT.agency — Workers et redirections
- “we needed to implement simple redirects, which should be easy to create on the majority of platforms but wasn’t supported” (traduction) « Nous devions mettre en œuvre de simples redirections, normalement faciles sur la plupart des plateformes, mais non prises en charge. » — Igor Krestov et Dan Taylor, Plongée dans le SEO technique avec Cloudflare Workers. Repris d’un résumé de l’article Cloudflare ; revérifiez la chaîne exacte avant d’en faire une citation ferme.
Quel outil choisir ?
« Je dois ajouter des redirections. »
- Petit jeu statique → Bulk Redirects ou Redirect Rules.
- Milliers d’URL indexées par clé → Worker + KV.
- Relations par langue ou segment → Worker + D1.
- Redirection et réécriture d’en-têtes ensemble → Worker.
« Je dois injecter ou corriger canonique, hreflang, titre ou JSON-LD. »
- Utilisez un Worker avec
HTMLRewriter; aucun produit sans code ne réécrit arbitrairement le corps.
« L’exploration Googlebot a chuté après Cloudflare. »
- Vérifiez d’abord Bot Fight Mode, qu’une règle WAF d’autorisation ne corrige pas.
- Vérifiez ensuite WAF et présence d’un
503ou interstitiel. - Auditez enfin code Worker et portée des routes.
« Ma balise injectée n’apparaît pas. »
- Consultez
CF-Cache-Status. AvecHITouEXPIRED, purgez la bonne couche. - Avec
MISS, examinez logique et route, puis confirmez dans l’inspection d’URL.
« Faut-il prérendre uniquement pour les robots ? »
- Non. Google considère le rendu dynamique comme obsolète ; utilisez SSR ou statique pour tous.
Liste de contrôle SEO Cloudflare Workers
Avant de livrer une réécriture
- Route limitée dans
wrangler.toml, pas/*par réflexe, et version active confirmée. - Logique identique pour tous les demandeurs.
- Gestionnaires
HTMLRewriteridempotents, testés sur absence, doublon, balise mal formée et non-HTML. - Outil de redirection adapté et aucun autre système propriétaire de l’URL.
- Limites actuelles CPU, sous-requêtes et taille vérifiées.
-
Cache-Controlne retarde pas excessivement la réexploration. - Version, date de compatibilité, liaisons et routes consignées, avec retour arrière testé et condition d’arrêt.
Contrôle des caches
- Couche connue : API Cache, cache edge ou
Cache-Controld’origine. - Si le Worker possède la réponse,
ETagest correct et304peut être renvoyé. - Purge et invalidation font partie du déploiement.
Accès des robots
- Bot Fight Mode ne défie pas Googlebot ; une règle WAF ne le neutralise pas.
- La règle
cf.client.botest présente si le WAF filtre les robots. - Les robots reçoivent
503, pas un interstitiel, lorsqu’il faut les ralentir.
Vérifier après déploiement
- Tester l’URL en direct dans l’inspection GSC confirme la balise dans le HTML rendu.
-
CF-Cache-Status, avecHIT,MISSouEXPIRED, indique si la copie est en cache. - IndexNow a été envoyé après une nouvelle table ou balise.
- Le déploiement Wrangler est versionné et son retour arrière testé.
Modèles mentaux
1. Un gestionnaire, trois phases. Tout Worker est un fetch : réécrire la requête, les en-têtes de
réponse, puis le corps avec HTMLRewriter. Situez la modification avant de coder.
2. « Cache » désigne trois choses. API Cache Workers avec caches.default, cache edge et Cache-Control d’origine diffèrent.
Quand un changement manque, identifiez d’abord la couche observée.
3. Test du cloaking : identité contre logique. Changer le contenu selon l’auteur de la requête est du cloaking ; appliquer la même logique à tous reste acceptable. Un visiteur reçoit-il exactement ce que reçoit Googlebot ?
4. Ordre des suspects après une chute d’exploration. Bot Fight Mode → règles WAF → code Worker → portée de route. Les paramètres de robots échappent aux règles d’autorisation ordinaires.
5. Le Worker possède la réponse et sa sémantique de cache. S’il produit le corps, il gère ETag, 304
et max-age : possibilité de répondre vite, mais risque de retarder la réexploration.
Aide-mémoire SEO Cloudflare Workers
Choisir l’outil de redirection
| Situation | Outil |
|---|---|
| Quelques dizaines de redirections statiques | Bulk Redirects ou Redirect Rules |
| Milliers indexés par URL | Worker + KV |
| Relations par langue ou requête | Worker + D1 |
| Redirection et réécriture d’en-têtes | Worker |
Les trois caches
| Couche | Définition | Interface |
|---|---|---|
| API Cache Workers | Programmable et propre au Worker | caches.default, caches.open() |
| Cache edge Cloudflare | Cache CDN | règles et purge |
Cache-Control d’origine | En-têtes de réponse | origine ou Worker |
API des gestionnaires HTMLRewriter
getAttribute/setAttribute: lire ou définir un attribut commehref.prepend/append: ajouter du balisage dans un élément commehead.setInnerContent: remplacer le contenu.replace: remplacer l’élément entier.
Repères
- CPU : 10 ms gratuit, 30 ms payant ; l’attente de
fetchne compte pas. - Le cloaking est une différence de contenu selon l’identité visant le classement.
- Bot Fight Mode est hors du moteur WAF ; modifiez le mode.
- Vérifiez avec Tester l’URL en direct et
CF-Cache-Status. - Google recommande
ETag; correspondance → 304 sans corps.
Vérifier ce que Googlebot reçoit après déploiement
Récupérer comme Googlebot et comparer dans le 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 / EXPIREDConfirmer le vrai Googlebot par DNS inverse puis direct
# 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.comSi l’un échoue, ce n’est pas Googlebot. Comparez aussi aux plages publiées dans googlebot.json.
Lire les balises injectées dans le HTML rendu, console DevTools
// 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);Court-circuit minimal ETag / 304 dans un 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 });
},
}; Outils pour créer et vérifier le SEO Workers
- Wrangler : CLI Cloudflare pour développement, versions, routes, environnements et retour arrière.
- HTMLRewriter : analyseur en flux pour réécrire le corps.
- Workers KV / D1 : stockage des redirections et configurations.
- Inspection d’URL GSC : rendu comme Google et confirmation des balises.
CF-Cache-Status:HIT,MISSouEXPIREDdanscurl -Iou DevTools.- IndexNow : signaler immédiatement le changement aux moteurs participants.
- Journaux serveur : preuve que le vrai Googlebot atteint les routes.
Auditer cohérence SEO et cache d’un Worker
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]Examiner une modification HTMLRewriter avant déploiement
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] Testez-vous : SEO Cloudflare Workers
Cinq questions rapides sur le SEO technique avec Cloudflare Workers.
Ressources recommandées
Mes articles
- 11 types de redirections et leur impact SEO — options Cloudflare et préférence pour le niveau edge.
- Guide du débutant en SEO technique — place des changements edge.
- Problèmes et pratiques du SEO JavaScript — rendu et tentation du prérendu edge.
Ma conférence
- Affiner SEO technique, vitesse et sécurité — entretien sur les réécritures Workers et les redirections CDN. Transcription orale : traitez les formulations comme des paraphrases.
Ailleurs dans le secteur
- Plongée dans le SEO technique avec Cloudflare Workers — origine du modèle requête, réponse et corps.
- Qu’est-ce que l’Edge SEO ? — présentation tierce du concept.
- Edge SEO — Dan Taylor, qui a nommé le domaine.
- HTMLRewriter — référence API.
- Fonctionnement du cache — API Cache contre cache edge.
- Redirects for AI Training — canonisation edge comme produit.
Approfondir
- Edge SEO — concept général, plateformes, Snippets, Workers et cloaking.
Journal des modifications
Mis à jour le 11 août 2026.
Résumé éditorial et détails enregistrés des changements.Détails des changements
-
Les notes détaillées des changements sont actuellement disponibles en anglais.
Comparaison complète indisponible — aucun instantané antérieur n’a été archivé pour cette révision.
Mis à jour le 11 août 2026.
Résumé éditorial et détails enregistrés des changements.Détails des changements
-
Les notes détaillées des changements sont actuellement disponibles en anglais.
Comparaison complète indisponible — aucun instantané antérieur n’a été archivé pour cette révision.
Mis à jour le 18 juil. 2026.
Résumé éditorial et détails enregistrés des changements.Détails des changements
-
Les notes détaillées des changements sont actuellement disponibles en anglais.
-
Les notes détaillées des changements sont actuellement disponibles en anglais.
Comparaison complète indisponible — aucun instantané antérieur n’a été archivé pour cette révision.