Declaration officielle
Autres déclarations de cette vidéo 38 ▾
- 1:08 Comment mon site entre-t-il dans le Chrome User Experience Report sans inscription ?
- 1:08 Comment votre site se retrouve-t-il dans le Chrome User Experience Report ?
- 2:10 Comment mesurer les Core Web Vitals quand votre site n'est pas dans CrUX ?
- 3:14 Les avis négatifs peuvent-ils vraiment pénaliser votre classement Google ?
- 3:14 Les avis négatifs peuvent-ils vraiment pénaliser votre ranking Google ?
- 7:57 Faut-il vraiment séparer sitemaps pages et images ?
- 7:57 Le découpage des sitemaps affecte-t-il vraiment le crawl et l'indexation ?
- 9:01 Le code 304 Not Modified est-il vraiment un piège pour votre indexation ?
- 11:39 Le cache Google influence-t-il vraiment le ranking de vos pages ?
- 11:39 Le cache Google est-il vraiment inutile pour évaluer la qualité SEO d'une page ?
- 13:51 Pourquoi votre changement de niche ne génère-t-il aucun trafic malgré tous vos efforts SEO ?
- 14:51 Les annuaires de liens sont-ils définitivement morts pour le SEO ?
- 17:59 Les pages traduites comptent-elles vraiment comme du contenu dupliqué aux yeux de Google ?
- 17:59 Les pages traduites sont-elles vraiment considérées comme du contenu unique par Google ?
- 20:20 Pourquoi Google ignore-t-il vos balises canonical et comment forcer l'indexation séparée de vos URLs régionales ?
- 22:15 Pourquoi Google ignore-t-il votre canonical sur les sites multi-pays ?
- 23:14 Pourquoi votre crawl budget Search Console explose-t-il sans raison apparente ?
- 23:18 Pourquoi votre crawl budget Search Console explose-t-il sans raison apparente ?
- 25:52 Faut-il vraiment limiter le taux de crawl dans Search Console ?
- 26:58 Hreflang et géociblage : Google peut-il vraiment ignorer vos signaux internationaux ?
- 28:58 Hreflang et canonical sont-ils vraiment fiables pour le ciblage géographique ?
- 34:26 Hreflang et canonical : pourquoi Search Console affiche-t-il la mauvaise URL ?
- 34:26 Pourquoi Search Console affiche-t-elle un canonical différent de ce qui apparaît dans les SERP pour vos pages hreflang ?
- 38:38 Comment Google différencie-t-il vraiment deux sites en même langue mais ciblant des pays différents ?
- 38:42 Faut-il canonicaliser toutes vos versions pays vers une seule URL ?
- 38:42 Faut-il vraiment garder chaque page hreflang en self-canonical ?
- 39:13 Comment éviter la canonicalisation entre vos pages multi-pays grâce aux signaux locaux ?
- 43:13 Faut-il vraiment abandonner les déclinaisons pays dans hreflang ?
- 45:34 Faut-il vraiment utiliser hreflang pour un site multilingue ?
- 47:44 Les commentaires Facebook ont-ils un impact sur le SEO et l'EAT de votre site ?
- 48:51 Faut-il isoler le contenu UGC et News en sous-domaines pour éviter les pénalités ?
- 50:58 Faut-il créer une version Googlebot allégée pour accélérer l'exploration ?
- 50:58 Faut-il optimiser la vitesse de votre site pour Googlebot ou pour vos utilisateurs ?
- 50:58 Faut-il servir une version allégée de vos pages à Googlebot pour améliorer le crawl ?
- 52:33 Peut-on créer des pages locales par ville sans risquer une pénalité pour doorway pages ?
- 52:33 Comment différencier une page par ville légitime d'une doorway page sanctionnable ?
- 54:38 L'action manuelle Google pour doorway pages a-t-elle disparu au profit de l'algorithmique ?
- 54:38 Les doorway pages sont-elles encore sanctionnées manuellement par Google ?
Google précise que le code HTTP 304 ne doit être retourné que pour les requêtes conditionnelles comportant un header If-Modified-Since ou similaire. Pour une requête normale sans condition, un 304 signale l'absence de contenu et empêche l'indexation par Googlebot. Cette distinction technique entre requête conditionnelle et requête standard est cruciale pour éviter de désindexer involontairement des contenus fonctionnels.
Ce qu'il faut comprendre
Qu'est-ce qu'une requête conditionnelle et comment fonctionne le code 304 ?
Une requête conditionnelle contient des headers spécifiques comme If-Modified-Since ou If-None-Match. Le navigateur ou le bot demande au serveur : "J'ai une version datant du 15 janvier, y a-t-il du nouveau ?" Si rien n'a changé, le serveur répond 304 et économise de la bande passante en ne renvoyant pas le corps de la réponse.
Le 304 est donc un mécanisme d'optimisation, pas un code d'erreur. Il suppose qu'une version valide existe déjà côté client. C'est la raison pour laquelle Google insiste sur le contexte : ce code ne fait sens que lorsqu'une condition est posée explicitement.
Que se passe-t-il si on retourne un 304 sur une requête normale ?
Pour une requête sans header conditionnel, un 304 devient problématique. Le bot ne possède aucune version en cache, il attend du contenu. En recevant un 304, Googlebot interprète cela comme "aucun contenu disponible" et ne peut donc pas indexer la page.
Concrètement ? Votre page disparaît de l'index. C'est particulièrement vicieux parce que le serveur ne renvoie pas d'erreur flagrante — juste une réponse vide techniquement valide mais sémantiquement fausse dans ce contexte.
Pourquoi cette erreur survient-elle fréquemment avec les sitemaps ?
Les sitemaps XML sont des fichiers régulièrement crawlés mais rarement modifiés. Certains développeurs mettent en place un mécanisme de cache agressif qui retourne systématiquement un 304, même sans requête conditionnelle, dans l'idée d'économiser des ressources.
Le problème : Googlebot qui découvre le sitemap pour la première fois ou après un vidage de cache reçoit un 304 aveugle. Résultat, impossible de lire les URLs listées. Mueller suggère plusieurs alternatives selon le cas : un fichier XML vide valide, un 404 si le sitemap n'existe plus, ou un 304 uniquement si une requête conditionnelle est détectée.
- Le code 304 est réservé aux requêtes conditionnelles avec headers If-Modified-Since ou If-None-Match
- Un 304 sur requête normale signale l'absence de contenu et bloque l'indexation
- Les sitemaps mal configurés sont une source fréquente de cette erreur
- Les alternatives correctes : fichier vide, 404, ou 304 conditionnel uniquement
- Vérifier la logique serveur pour s'assurer que le 304 n'est jamais retourné aveuglément
Avis d'un expert SEO
Cette déclaration est-elle cohérente avec les observations terrain ?
Absolument. Les cas de désindexation mystérieuse liés à des 304 mal configurés ne sont pas rares, surtout sur des CMS custom ou des plateformes e-commerce avec cache Varnish/Nginx mal paramétré. L'erreur classique : un dev met en place un cache HTTP sans distinguer les requêtes initiales des requêtes de validation.
Les logs serveur montrent alors des 304 systématiques pour Googlebot, qui ne possède pourtant aucune version en cache. La Search Console affiche "Explorée, actuellement non indexée" sans autre explication, et il faut plonger dans les headers pour comprendre. C'est un bug silencieux qui peut persister des mois.
Dans quels cas cette règle ne s'applique-t-elle pas ou devient-elle floue ?
Mueller reste vague sur les scénarios de CDN et de reverse proxy. Certains CDN retournent des 304 basés sur leur propre état de cache, indépendamment du header conditionnel initial. Est-ce que Googlebot tolère cette situation si le CDN a déjà servi le contenu auparavant ? [A verifier]
Autre zone grise : les ressources statiques (CSS, JS, images). Google ne détaille pas si la règle s'applique aussi strictement. En pratique, les ressources statiques avec 304 aveugle posent moins de problèmes d'indexation directs, mais peuvent affecter le rendering si Googlebot ne parvient pas à charger un CSS critique. Le discours officiel manque de granularité sur ce point.
Faut-il bannir complètement le 304 des sitemaps ?
Non, ce serait une sur-réaction. Le 304 conditionnel sur un sitemap est parfaitement légitime et économise du crawl budget quand il est bien implémenté. Le piège est dans l'implémentation : beaucoup de frameworks retournent un 304 par défaut sans vérifier la présence du header If-Modified-Since.
La recommandation de Mueller sur le fichier vide est pragmatique pour les sitemaps temporairement vides (nouvelle section du site pas encore indexée, par exemple). Un fichier XML valide avec
Impact pratique et recommandations
Comment vérifier que votre serveur ne retourne pas de 304 aveugle ?
Testez vos URLs et sitemaps avec curl ou Postman en émulant Googlebot. Faites une requête sans header conditionnel : curl -I -A "Googlebot" https://example.com/sitemap.xml. Si vous obtenez un 304, c'est un problème flagrant.
Ensuite, testez avec un header conditionnel : curl -I -H "If-Modified-Since: Mon, 01 Jan 2024 00:00:00 GMT" https://example.com/sitemap.xml. Là, un 304 est attendu si le fichier n'a pas changé depuis cette date. La différence de comportement entre les deux requêtes doit être nette.
Quelles configurations serveur faut-il auditer en priorité ?
Les reverse proxy comme Varnish ou Nginx sont les premiers suspects. Vérifiez la logique de cache : le 304 doit être conditionné à la présence d'un header de validation, pas à l'existence d'une entrée en cache côté serveur.
Côté applicatif, les frameworks PHP (Symfony, Laravel) et Node.js (Express) ont souvent des middlewares de cache HTTP. Assurez-vous qu'ils ne retournent un 304 que si req.headers['if-modified-since'] ou if-none-match est présent et correspond à la version actuelle. Un flag booléen "isCached" ne suffit pas.
Que faire si vous découvrez un 304 aveugle sur des pages indexées ?
Corrigez la configuration immédiatement et forcez un recrawl via Search Console pour les URLs critiques. Pour un sitemap, soumettez-le à nouveau une fois la correction déployée. Les pages déjà désindexées peuvent mettre plusieurs semaines à revenir selon le crawl budget du site.
Surveillez la couverture d'index dans Search Console pendant les semaines suivantes. Une chute brutale de pages indexées coïncidant avec un déploiement cache est un signal d'alerte. Les logs serveur doivent montrer une distribution normale de codes 200/304, pas un 304 systématique.
- Tester chaque URL critique avec curl sans header conditionnel et vérifier l'absence de 304
- Auditer la configuration Varnish/Nginx/CDN pour conditionner le 304 aux headers de validation
- Vérifier que les middlewares applicatifs vérifient explicitement If-Modified-Since ou If-None-Match
- Mettre en place une alerte monitoring sur le ratio 304/200 par type de bot (Googlebot vs utilisateurs)
- Documenter la logique de cache HTTP pour éviter les régressions lors des mises à jour
- Pour les sitemaps vides, privilégier un fichier XML valide vide plutôt qu'un 404 ou 304
❓ Questions frequentes
Un 304 sur un sitemap vide est-il acceptable si je détecte le header If-Modified-Since ?
Googlebot envoie-t-il systématiquement des headers conditionnels lors de ses crawls ?
Un CDN qui retourne un 304 basé sur son propre cache peut-il bloquer l'indexation ?
Quelle est la différence entre un sitemap vide (fichier XML valide) et un 404 ?
Le 304 aveugle affecte-t-il aussi les ressources statiques CSS et JS ?
🎥 De la même vidéo 38
Autres enseignements SEO extraits de cette même vidéo Google Search Central · durée 56 min · publiée le 04/08/2020
🎥 Voir la vidéo complète sur YouTube →
💬 Commentaires (0)
Soyez le premier à commenter.