Mis à jour le 1er novembre 2026. Cet article regroupe désormais notre article « Crawl budget et logs serveur : le rôle réel de l’IA ». Nous avons ajouté les seuils de taille fixés par Google pour le budget d’exploration, le rapport « Statistiques sur l’exploration », les fichiers JSON des plages d’IP de Google à jour, l’effet des codes 5xx et 429 sur le rythme d’exploration et la distinction entre Googlebot et les robots d’IA.
Les logs serveur enregistrent chaque requête reçue par votre site. Pour le SEO, ils répondent à une question que la Search Console ne détaille pas URL par URL : Googlebot a-t-il demandé cette page, quand, et qu’a-t-il reçu ? Ce guide suppose le format « combined », le plus répandu sur Apache et Nginx.
Logs serveur et Search Console : deux vues complémentaires
La Search Console propose le rapport « Statistiques sur l’exploration », accessible depuis les paramètres de la propriété. Il n’existe que pour une propriété de domaine ou un préfixe d’URL racine. Il ventile l’exploration par code de réponse, type de fichier, objectif (découverte ou actualisation) et type de Googlebot. Il indique aussi l’état de l’hôte sur 90 jours : robots.txt, résolution DNS et connectivité du serveur.
Ces données sont agrégées. Les logs, eux, donnent chaque requête.
| Question | Source à utiliser |
|---|---|
| La page est-elle indexée, et pourquoi pas ? | Rapport « Indexation des pages », inspection d’URL |
| Googlebot a-t-il demandé cette URL précise, et quand ? | Logs serveur |
| Le serveur a-t-il eu des problèmes de disponibilité ? | Statistiques sur l’exploration (état de l’hôte), puis logs |
| Quelles sections consomment l’exploration ? | Logs serveur, regroupés par modèle d’URL |
| Robots.txt est-il lu correctement ? | Rapport robots.txt de la Search Console |
Pour la prise en main de l’outil, consultez notre guide de la Search Console.
Le budget d’exploration concerne-t-il votre site ?
Google décrit le budget d’exploration à partir de deux composantes. La limite de capacité correspond à la charge que votre serveur supporte : elle monte quand le site répond vite et baisse en cas d’erreurs ou de lenteur. La demande dépend du nombre d’URL connues, de leur popularité et de la fréquence de mise à jour.
Selon sa documentation, mise à jour le 22 juillet 2026, le guide sur le budget d’exploration vise trois profils : les sites de plus d’un million de pages uniques mises à jour environ une fois par semaine, ceux de plus de 10 000 pages mises à jour chaque jour, et les sites dont beaucoup d’URL sont classées « Détectée, actuellement non indexée ». Google précise que ces chiffres sont une estimation approximative.
Ce dernier cas concerne aussi les petits sites. Les logs montrent alors si Googlebot passe réellement sur ces URL.
Où trouver vos fichiers de logs
Hébergement avec panneau de contrôle
Dans cPanel, ouvrez la section Métriques, puis Accès brut (Raw Access). Les journaux du domaine s’y téléchargent, souvent compressés en .gz. Sur les autres panneaux, le chemin varie : demandez-le au support de votre hébergeur.
Serveur accessible en SSH
Repérez le fichier défini par la directive CustomLog (Apache) ou access_log (Nginx) :
# Contenu des dossiers de logs par défaut
ls -lh /var/log/apache2/ /var/log/nginx/
# Chemin réel défini dans la configuration
grep -rn "CustomLog\|access_log" /etc/apache2/ /etc/nginx/
Sur Debian, les hôtes virtuels d’Apache sont souvent journalisés dans other_vhosts_access.log, avec le nom de domaine et le port en début de ligne. Si un CDN répond à la place de votre serveur, ces requêtes n’apparaissent pas dans vos logs : récupérez les journaux du CDN. Enfin, la rotation supprime les anciens fichiers : archivez-les pour comparer des périodes.
Vérifier le format avant de lancer les commandes
66.249.66.1 - - [15/May/2026:14:25:10 +0200] "GET /produits/mon-produit HTTP/1.1" 200 15322 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
$1: adresse IP du client ;$4: date et heure ;$7: URL demandée, sans espace car les espaces sont encodés ;$9: code de statut HTTP ;$10: taille de la réponse en octets.
Le User-Agent contient des espaces : filtrez-le avec une expression régulière, pas par numéro de colonne. Affichez une ligne avec head -n 1 access.log. Si elle commence par un nom de domaine et un port (format vhost_combined), ajoutez 1 à chaque numéro de champ.
Isoler et vérifier Googlebot
Filtrer le User-Agent et les ressources statiques
grep -E '"[^"]*Googlebot[^"]*"$' access.log > googlebot_brut.log
awk '$7 !~ /\.(css|js|png|jpe?g|gif|ico|svg|webp|woff2?)(\?|$)/' googlebot_brut.log > googlebot_pages.log
La première commande ne cherche « Googlebot » que dans le User-Agent, en fin de ligne. La seconde écarte images, feuilles de style et scripts. Google indexant surtout la version mobile, la plupart des requêtes viennent de Googlebot smartphone.
Confirmer les IP par DNS
Un User-Agent se falsifie. Google recommande une double vérification : la résolution inverse de l’IP doit renvoyer un nom en googlebot.com, google.com ou googleusercontent.com, puis la résolution directe de ce nom doit renvoyer la même IP. La commande host est fournie par le paquet bind9-host sur Debian et Ubuntu.
awk '{print $1}' googlebot_pages.log | sort -u > ips.txt
: > ips_confirmees.txt
while read -r ip; do
nom=$(host "$ip" | awk '/pointer/ {print $NF}' | sed 's/\.$//')
case "$nom" in
*.googlebot.com|*.google.com|*.googleusercontent.com)
if host "$nom" | grep -qF "$ip"; then
echo "$ip" >> ips_confirmees.txt
fi ;;
esac
done < ips.txt
awk 'NR == FNR { ok[$1]; next } $1 in ok' ips_confirmees.txt googlebot_pages.log > googlebot_verifie.log
Pour de gros volumes, Google publie des fichiers JSON de plages d’IP par catégorie : common-crawlers.json (dont Googlebot), special-crawlers.json, user-triggered-fetchers.json, user-triggered-fetchers-google.json et user-triggered-agents.json, sous https://developers.google.com/static/crawling/ipranges/. Utilisez ensuite googlebot_verifie.log pour toutes les analyses.
Googlebot et robots d’IA
Google-Extended n’est pas un robot distinct, mais un jeton robots.txt qui décide si le contenu collecté peut servir à Gemini : il n’apparaît pas dans vos logs. Les robots d’OpenAI (GPTBot, OAI-SearchBot, ChatGPT-User) ont leurs propres User-Agents et listes d’IP. Ne les comptez pas avec Googlebot.
Lire les codes HTTP dans les logs
| Code | Signification | Lecture pour le SEO |
|---|---|---|
| 200 | Page servie | Une URL stratégique qui n’obtient jamais de 200 mérite un contrôle. |
| 301, 308 | Redirection permanente | Un problème si l’ancienne URL reçoit des hits répétés : un lien interne ou le sitemap pointe encore vers elle. |
| 302, 303, 307 | Redirection temporaire | Vérifiez qu’elle est voulue. |
| 304 | Non modifié | Normal : Googlebot réutilise sa copie. Google encourage la prise en charge du cache HTTP. |
| 401, 403 | Accès refusé | Prioritaire si Googlebot est visé : un pare-feu ou une protection anti-bot le bloque. |
| 404, 410 | Page absente | À corriger sur une URL du sitemap ou d’un lien interne. Pour Google, un 404 est un signal fort de ne pas réexplorer. |
| 429, 500 à 504 | Limitation ou erreur serveur | Google réduit la capacité d’exploration sur tout le nom d’hôte. Répétés plusieurs jours sur une URL, ils peuvent la faire sortir de l’index. |
Google admet un 500, 503 ou 429 pour ralentir l’exploration en urgence, quelques heures à un ou deux jours, pas davantage. Pour diagnostiquer ces erreurs côté serveur, voir l’analyse des logs Nginx et des erreurs 5xx.
# Répartition des codes de statut
awk '{print $9}' googlebot_verifie.log | sort | uniq -c | sort -rn
# URL en erreur, par fréquence
awk '$9 ~ /^[45]/ {print $9, $7}' googlebot_verifie.log | sort | uniq -c | sort -rn | head -n 20
# URL redirigées, par fréquence
awk '$9 ~ /^30[12378]$/ {print $9, $7}' googlebot_verifie.log | sort | uniq -c | sort -rn | head -n 20
Le format combined ne contient pas la cible d’une redirection. Lisez l’en-tête Location avec curl -sI https://votre-site.example/ancienne-url/.
Analyser une page non indexée
Indiquez le chemin exactement comme il apparaît dans les logs, slash final compris :
awk '$7 == "/mon-article/" {print $4, $9}' googlebot_verifie.log
Suivez cet ordre :
- Lisez le motif d’exclusion dans le rapport « Indexation des pages ».
- Aucune ligne dans les logs : Googlebot ne demande pas l’URL. Renforcez le maillage interne et le sitemap.
- Des réponses 3xx, 4xx ou 5xx : corrigez-les en premier.
- Des hits réguliers en 200 : le crawl n’est plus en cause. Cherchez une balise noindex, une canonical vers une autre URL ou un contenu jugé faible.
- Le budget d’exploration ne devient un chantier que si les logs montrent un gaspillage mesurable sur des URL sans valeur.
Ce qui consomme le budget, et les fausses pistes
Plusieurs situations dépensent des requêtes sur des URL sans valeur :
- les facettes et paramètres d’URL (filtres, tris, identifiants de session) ;
- les doublons accessibles sous plusieurs adresses ;
- les soft 404, pages vides renvoyées en 200 ;
- les chaînes de redirections ;
- les espaces sans fin, comme un calendrier ou une pagination infinie ;
- les erreurs serveur et les réponses lentes, qui réduisent la capacité elle-même.
# Requêtes par première section du chemin
awk '{sub(/\?.*/, "", $7); split($7, p, "/"); print "/" p[2]}' googlebot_verifie.log | sort | uniq -c | sort -rn | head -n 20
# Requêtes portant des paramètres
awk '$7 ~ /\?/' googlebot_verifie.log | wc -l
Certaines pratiques ne pilotent pas l’exploration :
- La directive crawl-delay : Google ne la prend pas en charge.
- Les balises priority et changefreq du sitemap : Google les ignore. Il utilise
lastmodseulement si la valeur est fiable dans la durée. - Le noindex pour économiser du crawl : Googlebot doit explorer la page pour lire la balise.
- Le robots.txt pour désindexer : une URL bloquée peut rester indexée sans extrait, et Googlebot ne lit plus sa balise noindex.
Pour rédiger un fichier propre, notre générateur de robots.txt évite de bloquer des ressources CSS ou JavaScript. Pour contrôler une page, utilisez le vérificateur d’indexation Google.
Regrouper les URL par modèles
Sur un gros volume, ramenez chaque URL à un modèle :
import re
def modele_url(url: str) -> str:
"""Remplace les identifiants numériques du chemin par {id}."""
chemin = url.split("?", 1)[0]
return re.sub(r"/\d+(?=/|-|$)", "/{id}", chemin)
print(modele_url("/produit/123-chaussure?couleur=bleu"))
# /produit/{id}-chaussure
Les paramètres disparaissent : comptez les facettes avant d’appliquer la fonction.
Prioriser les corrections
| Priorité | Signal dans les logs | Cause probable | Action |
|---|---|---|---|
| Haute | 5xx ou 429 répétés | Panne, surcharge, limitation trop stricte | Comparer avec le dernier déploiement, alerter l’hébergeur |
| Haute | 401 ou 403 pour Googlebot | Pare-feu, protection anti-bot | Autoriser les IP confirmées |
| Haute | 404 sur des URL du sitemap | Sitemap obsolète, lien cassé | Corriger ; 301 si un équivalent existe |
| Moyenne | Chaîne de redirections | Lien interne vers une ancienne adresse | Pointer vers la destination finale |
| Moyenne | Beaucoup d’URL avec ? | Facettes, suivi | Lien supprimé, robots.txt ou canonical selon l’objectif |
| Basse | Pages du sitemap absentes des logs | Maillage faible | Liens depuis des pages déjà explorées |
| Basse | Googlebot non confirmé par DNS | Usurpation | Ignorer ; bloquer l’IP si elle gêne |
Croisez ensuite le volume avec la valeur de la page : une page stratégique peu explorée et un groupe sans valeur très exploré passent en premier. Pour sortir une URL de l’index, laissez-la explorable avec un noindex ou un code 410. Une canonical indique la version à retenir sans réduire l’exploration.
Le rôle de l’IA et ses limites
Filtrer, compter et comparer au sitemap sont des opérations exactes : un script suffit. Une IA générative aide à écrire une expression régulière, à expliquer un User-Agent inconnu ou à rédiger une synthèse à partir de chiffres déjà calculés. Elle ne doit pas calculer de totaux sur des lignes brutes. Le machine learning se justifie pour détecter des anomalies de volume ou regrouper les URL d’un site à structure inconnue. Les adresses IP des visiteurs sont des données personnelles : anonymisez-les avant tout envoi à un service d’IA.
Questions fréquentes
Faut-il vérifier chaque ligne Googlebot par DNS ?
Non. Vérifiez chaque IP unique une fois par analyse, puis gardez les lignes des IP confirmées. Pour de gros volumes, comparez les IP aux fichiers JSON publiés par Google.
Le budget d’exploration concerne-t-il un petit site ?
Rarement. Google le réserve aux sites très grands ou très changeants, mais cite aussi les sites avec beaucoup d’URL « Détectée, actuellement non indexée ». Dans ce cas, vérifiez d’abord dans les logs si Googlebot passe sur ces URL.
Les logs suffisent-ils à expliquer l’indexation ?
Non. Ils montrent les requêtes reçues, pas le statut d’indexation. Croisez-les avec le rapport « Indexation des pages » et l’inspection d’URL.
Peut-on bloquer GPTBot sans gêner Googlebot ?
Oui. Ce sont des robots distincts, avec des jetons robots.txt différents. Un Disallow pour GPTBot ne touche pas Googlebot. Pour l’usage de vos contenus par Gemini, le jeton concerné est Google-Extended.
Sources
- Google Search Central, Gestion du budget d’exploration pour les sites volumineux (mise à jour du 22 juillet 2026)
- Google Search Central, Vérifier Googlebot et les autres robots Google
- Google Search Central, Réduire la vitesse d’exploration de Googlebot
- Google Search Central, Googlebot
- Google Search Central, Robots d’exploration courants de Google
- Google Search Central, Créer un sitemap
- Google Search Central, Spécifications du fichier robots.txt
- Aide Search Console, Rapport Statistiques sur l’exploration
- OpenAI, Robots d’exploration d’OpenAI