Server-Logfile-Analyse für SEO: kompletter Leitfaden
So werten Sie Crawl-Logs aus, grenzen den Analyseumfang sauber ab und trennen Bot-Aktivität von Aussagen zu Rankings oder Traffic, wenn Sie technische Fixes priorisieren.
Warum Logfiles analysieren
Google Search Console zeigt nur aggregierte Daten mit drei Tagen Verzögerung. Screaming Frog simuliert einen Browser, nicht den Googlebot. Logfiles des Webservers sind die einzige Quelle, die jede echte Anfrage eines Suchbots erfasst: den genauen Zeitstempel, die URL, den Antwortstatus und die IP-Adresse des Crawlers.
Die Logfile-Analyse beantwortet Fragen, die sich auf anderem Weg nicht klären lassen: Welche Seiten der Googlebot stündlich crawlt und welche er seit Monaten nicht besucht hat; wo der Crawler auf 404-Fehler und 500er-Fehler stößt; ob es endlose Weiterleitungsschleifen gibt; ob Crawl-Budget für parametrische Duplikate oder Seiten hinter einer Login-Wand verschwendet wird. Genau diese Daten brauchen Sie, um beim Crawl-Budget-Management fundierte Entscheidungen zu treffen.
Was die Logfile-Analyse liefert
Echte Anfragen
Jede HTTP-Anfrage eines Crawlers wird im Logfile erfasst – ohne Stichproben und ohne Verzögerung durch Aggregation
Zeitgenauigkeit
Zeitstempel auf Sekundenbasis zeigen Crawl-Muster nach Wochentag und Uhrzeit
Bots in einer Quelle
Googlebot, Bingbot, Yandex und weitere – alle Crawler in einer Datei, vergleichbar in einer Ansicht
Datenverzögerung
Logfiles stehen sofort zur Verfügung – ohne Warten auf einen erneuten Crawl oder eine Aktualisierung des GSC-Berichts
So greifen Sie auf Logfiles zu
Der Pfad zu den Logs hängt vom Webserver und vom Hoster ab. Auf den meisten VPS und Dedicated Servern sind die Logfiles direkt per SSH erreichbar. Für die Analyse brauchen Sie in der Regel Access-Logs der letzten 30–90 Tage: Dieser Zeitraum reicht aus, um saisonale Muster zu erkennen, und die Daten bleiben aktuell.
| Server / Plattform | Standardpfad zu den Logs | Hinweise |
|---|---|---|
| Nginx | /var/log/nginx/access.log | Wird per logrotate rotiert. Archive: access.log.1, access.log.2.gz usw. |
| Apache | /var/log/apache2/access.log (Debian/Ubuntu) oder /var/log/httpd/access_log (RHEL) | Das Format kann CLF oder Combined sein – prüfen Sie die Direktive LogFormat |
| cPanel / WHM | ~/access-logs/<domain> oder File Manager → Logs | Oft nach Domains getrennt. Raw Access ist im cPanel-Interface verfügbar |
| Cloudflare Workers / Enterprise | Logpush-API → S3, R2, GCS | Nur im Enterprise-Tarif. Für Free/Pro: Workers Analytics Engine |
| AWS CloudFront | S3-Bucket, der in den Distribution-Einstellungen unter Logging konfiguriert ist | Logs alle 5–10 Minuten, gzip-komprimiert |
| Google Cloud / GCS | Cloud Logging → Export nach BigQuery oder GCS | Ideal für große Datenmengen – SQL-Abfragen direkt in BigQuery ausführen |
# Nginx: view the last 1000 lines of the access log
tail -n 1000 /var/log/nginx/access.log
# Size of the current log file
du -sh /var/log/nginx/access.log
# Decompress and merge rotated logs
zcat /var/log/nginx/access.log.*.gz | cat - /var/log/nginx/access.log > all_access.log
# Line count (≈ number of requests) in the merged file
wc -l all_access.logrotate 30 in /etc/logrotate.d/nginx rechtzeitig – gelöschte Logs lassen sich nicht wiederherstellen.Aufbau eines Logeintrags: CLF-Format
Die meisten Server verwenden standardmäßig das Combined Log Format (CLF), eine erweiterte Variante des Common Log Format. Hier sind die Felder, die für die SEO-Analyse wichtig sind.
# Combined Log Format record (Nginx/Apache)
66.249.66.1 - - [19/May/2026:14:32:01 +0000] "GET /blog/seo-guide/ HTTP/1.1" 200 45231 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
│ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ └─ User-Agent
│ │ │ │ │ │ │ └───── Referer
│ │ │ │ │ │ └─────────── Bytes sent
│ │ │ │ │ └──────────────── HTTP status
│ │ │ │ └─────────────────────────────────────────── Request
│ │ │ └────────────────────────────────────────────────────────────────────────── Timestamp
│ │ └───────────────────────────────────────────────────────────────────────────── Auth user
│ └─────────────────────────────────────────────────────────────────────────────── Ident
└─────────────────────────────────────────────────────────────────────────────────────────── IP address| Feld | SEO-Relevanz | Worauf Sie achten sollten |
|---|---|---|
| IP-Adresse | Hoch | IP-Bereiche von Googlebot, Bingbot, Yandex – zum Filtern echter Crawler |
| Timestamp | Hoch | Crawl-Frequenz und Zeitpunkt des letzten Besuchs bestimmter URLs |
| Request (Methode + URL) | Kritisch | Welche URLs gecrawlt werden: benötigte Seiten, Duplikate, Parameter, nicht existierende Pfade |
| HTTP-Status | Kritisch | 200 (gut), 301/302 (Weiterleitungen), 404 (defekte Links), 500 (Serverfehler) |
| Gesendete Bytes | Mittel | Auffällig kleine Größe – Hinweis auf eine leere Seite oder eine Stub-Antwort |
| User-Agent | Kritisch | Googlebot von anderen Bots und echten Nutzern unterscheiden |
Filtern: Crawler isolieren
Rohe Logs enthalten einen Mix aus Nutzeranfragen, Monitoring-Pings, Spam-Bots und Suchcrawlern. Für die SEO-Analyse müssen Sie nur die Suchbots herausfiltern. Am zuverlässigsten gelingt das über den User-Agent-String, gefolgt von einer IP-Prüfung per DNS.
# Extract all Googlebot requests
grep -i 'googlebot' /var/log/nginx/access.log > googlebot.log
# Extract all SEO crawlers
grep -iE '(googlebot|bingbot|yandex|ahrefsbot|semrushbot|mj12bot)' \
/var/log/nginx/access.log > all_bots.log
# Count requests by crawler
grep -oiE '(googlebot|bingbot|yandexbot|ahrefsbot|semrushbot)' \
/var/log/nginx/access.log | sort | uniq -c | sort -rn
# Verify IP via reverse DNS (confirm it's the real Googlebot)
host 66.249.66.1
# Should return: crawl-66-249-66-1.googlebot.com
# Then forward DNS:
host crawl-66-249-66-1.googlebot.com
# Should return the same IP — then it's a legitimate GooglebotGooglebot häufig. Für eine genaue Filterung prüfen Sie die IPs per Reverse-DNS: Der echte Googlebot löst auf *.googlebot.com auf. Google veröffentlicht die offiziellen IP-Bereiche über die Special IP Addresses API.Zentrale SEO-Kennzahlen
Nach dem Filtern beginnt die Analyse. Hier sind sechs Kennzahlen, die mit dem geringsten Aufwand die meisten Erkenntnisse liefern.
Wie oft der Googlebot eine bestimmte URL im Zeitraum besucht hat. Seiten mit hohem PageRank und häufigen Aktualisierungen werden öfter gecrawlt. Wurde eine wichtige Seite in 30 Tagen nur einmal besucht, stuft Google sie als wenig wertvoll ein.
Ziel: wichtige Seiten mindestens einmal alle 3 TageAnteil der 4xx- und 5xx-Antworten an den Googlebot-Anfragen. 404-Fehler verschwenden Crawl-Budget. 500er-Fehler weisen auf systemische Probleme hin. Eine hohe Fehlerquote mindert das Vertrauen von Google in die Website.
Richtwert: 4xx unter 3 %, 5xx unter 0,5 %Welcher Anteil der Googlebot-Anfragen mit 301 oder 302 endet. Weiterleitungen verbrauchen Budget und verzögern die erneute Indexierung. Besonders schädlich sind Weiterleitungsketten (A → B → C).
Richtwert: 3xx unter 10 % aller Bot-AnfragenGleicher Inhalt unter verschiedenen URLs: mit und ohne www, mit und ohne abschließenden Schrägstrich, mit UTM-Parametern. Jede Variante wird separat gecrawlt – ein direkter Abfluss des Crawl-Budgets.
Ziel: eine kanonische URL pro InhaltWichtige Seiten (Kategorien, Landingpages, neue Artikel), die der Googlebot in 30 Tagen nie angefragt hat. Das deutet auf Probleme mit der internen Verlinkung oder auf eine Sperre in der robots.txt hin.
Ziel: 0 wichtige Seiten ohne Crawl in 30 TagenSeiten, die der Googlebot crawlt, obwohl er es nicht sollte: Admin-Bereiche, Session-Seiten, Testumgebungen, parametrische Duplikate. Sie verschwenden Budget und stellen mitunter ein Sicherheitsrisiko dar.
Ziel: 0 sensible URLs in den Googlebot-LogsAnalyse-Tools
Drei Werkzeuge decken 95 % der Aufgaben bei der Logfile-Analyse ab: die Kommandozeile für schnelle Checks, eine spezialisierte grafische Oberfläche (GUI) für tiefe Analysen sowie Python oder BigQuery für große Datenmengen und Automatisierung.
Bash: schnelle Analyse ohne Installation
# Top 20 URLs Googlebot crawls most often
grep -i 'googlebot' access.log \
| awk '{print $7}' \
| sort | uniq -c | sort -rn | head -20
# Response status distribution for Googlebot
grep -i 'googlebot' access.log \
| awk '{print $9}' \
| sort | uniq -c | sort -rn
# URLs returning 404 to Googlebot
grep -i 'googlebot' access.log \
| awk '$9 == 404 {print $7}' \
| sort | uniq -c | sort -rn | head -50
# Googlebot request count by day
grep -i 'googlebot' access.log \
| awk '{print $4}' \
| cut -d: -f1 | tr -d '[' \
| sort | uniq -c
# Parametric URLs in Googlebot requests
grep -i 'googlebot' access.log \
| awk '{print $7}' \
| grep '?' \
| sort | uniq -c | sort -rn | head -30Screaming Frog Log File Analyser
Ein kostenpflichtiges Tool (259 $ pro Jahr), das für regelmäßige Analysen aber unverzichtbar ist. Es lädt die Logdatei, parst sie und erstellt Berichte: Segmentierung nach Bot und Browser, Status-Dashboards, Heatmaps der Crawls nach Verzeichnissen und eine Liste der Seiten ohne Crawl. Unterstützt werden Nginx, Apache, IIS, CloudFlare, Fastly sowie eigene CSV-Formate.
Python: flexible Analyse großer Dateien
import re
from collections import Counter
LOG_PATTERN = re.compile(
r'(?P<ip>\S+) \S+ \S+ \[(?P<time>[^\]]+)\] '
r'"(?P<method>\S+) (?P<url>\S+) \S+" '
r'(?P<status>\d{3}) (?P<size>\S+) '
r'"(?P<referer>[^"]*)" "(?P<ua>[^"]*)')
def parse_log(path: str, bot_pattern: str = 'googlebot') -> list[dict]:
entries = []
with open(path) as f:
for line in f:
m = LOG_PATTERN.match(line)
if not m:
continue
if bot_pattern.lower() not in m.group('ua').lower():
continue
entries.append({
'ip': m.group('ip'),
'url': m.group('url'),
'status': int(m.group('status')),
'ua': m.group('ua'),
})
return entries
entries = parse_log('access.log')
# Top 20 URLs by crawl frequency
url_counts = Counter(e['url'] for e in entries)
for url, count in url_counts.most_common(20):
print(f'{count:>6} {url}')
# 404 errors
errors = [e['url'] for e in entries if e['status'] == 404]
for url, count in Counter(errors).most_common(20):
print(f'{count:>6} 404 {url}')Crawl-Muster: worauf Sie achten sollten
Rohe Kennzahlen sind ohne Interpretation wertlos. Hier sind konkrete Muster, nach denen Sie in den Googlebot-Logs suchen sollten.
Muster 1: gecrawlt, aber nicht indexiert
Der Googlebot besucht eine Seite regelmäßig, sie taucht in der GSC aber nie als „Indexiert“ auf. Ursachen: Meta-Tag noindex, eine Sperre über den X-Robots-Tag im HTTP-Header, Thin Content oder ein Canonical, das auf eine andere Seite zeigt. Gleichen Sie die Liste regelmäßig gecrawlter URLs mit den indexierten Seiten aus der GSC-API ab – Abweichungen zeigen die problematischen Seiten.
Muster 2: Crawl-Stürme
Ein plötzlicher Anstieg der Googlebot-Anfragen in einem kurzen Zeitraum ist oft ein Zeichen für unendlich generierte URLs: Facetten, paginierte Parameter-URLs, Session-Token in URLs. Ein Crawl-Sturm kann das gesamte Budget in wenigen Stunden aufbrauchen und den Server belasten. Stellen Sie die Anfragen als Histogramm nach Stunden dar – auffällige Spitzen sind sofort sichtbar.
Muster 3: neue Seiten werden ignoriert
Eine neue Seite wurde vor drei Wochen erstellt und in die Sitemap aufgenommen, doch in den Logs des Googlebot stehen null Anfragen. Ursachen: keine internen Links zur Seite, die Sitemap wird vom Bot nicht erneut gecrawlt oder die Seite liegt zu tief in der Verzeichnisstruktur. Prüfen Sie neue URLs mit dem URL-Prüftool der GSC und suchen Sie in den Logs nach dem Datum des ersten Auftretens.
Muster 4: Ressourcen, die das Rendering blockieren
Der Googlebot lädt nicht nur HTML-Seiten, sondern auch CSS, JS und Bilder. Sind kritische Ressourcen in der robots.txt gesperrt, kann der Bot die Seite nicht rendern und wertet sie womöglich ab. Prüfen Sie in den Logs, wie viel Prozent der Googlebot-Anfragen auf statische Ressourcen entfallen und ob benötigte JS-Dateien gesperrt sind.
Häufige Probleme und Lösungen
| Problem in den Logs | Ursache | Lösung |
|---|---|---|
| Viele 404 vom Googlebot | Gelöschte Seiten, auf die noch externe oder interne Links verweisen | 301 auf die nächste aktive Seite + defekte interne Links entfernen |
| Parametrische URLs im Crawl | UTM-Tags, Sortierungen und Sessions sind nicht in der robots.txt gesperrt | Disallow in der robots.txt + Canonical auf die saubere URL auf den Seiten selbst |
| Weiterleitungsketten (A→B→C) | Angesammelte Weiterleitungen nach einer Umstrukturierung | Auf einen einzigen Sprung reduzieren – alle ausgehenden Links aktualisieren |
| Seiten /admin, /staging in den Logs | Servicebereiche sind nicht gesperrt | Disallow /admin/ in der robots.txt + HTTP-Authentifizierung für Staging |
| 5xx-Antworten an den Googlebot | Serverüberlastung bei Traffic-Spitzen oder Backend-Fehler | TTFB optimieren, Caching einführen, Crawler-Rate-Limit konfigurieren |
| Wichtige Seite wird nicht gecrawlt | Keine internen Links, zu tief in der Hierarchie, nicht in der Sitemap | In die Sitemap aufnehmen + interne Links von zentralen Seiten setzen |
| Duplikate mit und ohne www | Keine 301-Weiterleitung auf die kanonische Domainversion eingerichtet | 301 von Non-www auf www (oder umgekehrt) auf Ebene von nginx/Apache |
| robots.txt blockiert benötigte JS/CSS | Standard-Disallow /assets/ oder /static/ im Template | Sperre für kritische Ressourcen entfernen, die für das Rendering nötig sind |
# Detect redirect chains in logs
# Step 1: extract all URLs with 301/302 status for Googlebot
grep -i 'googlebot' access.log \
| awk '$9 ~ /^30[12]$/ {print $7}' | sort -u > redirects.txt
# Step 2: check if any of those URLs are also redirect sources
while read url; do
if grep -q "GET $url " redirects.txt 2>/dev/null; then
echo "CHAIN: $url"
fi
done < redirects.txt
# Find 5xx errors grouped by URL and hour
grep -i 'googlebot' access.log \
| awk '$9 ~ /^5/ {print $4" "$7}' \
| cut -d: -f1-2 \
| sort | uniq -c | sort -rn | head -20FAQ
Fazit
Die Logfile-Analyse ist das ehrlichste SEO-Audit, das es gibt. Die GSC zeigt Aggregate, Screaming Frog simuliert – die Logs erfassen jede echte Entscheidung des Googlebot. Der Ablauf ist einfach: Logs für 30–90 Tage beschaffen → Crawler per User-Agent filtern und per DNS verifizieren → sechs zentrale Kennzahlen berechnen → mit dem GSC-Index abgleichen → Abweichungen beheben.
Starten Sie mit drei Bash-Befehlen: die 20 meistgecrawlten URLs, die Verteilung der Statuscodes und die häufigsten 404-Fehler. Innerhalb einer Stunde haben Sie eine konkrete Liste mit Maßnahmen: einzurichtende Weiterleitungen, URLs für die robots.txt, Seiten für die Sitemap. Das ist schneller und günstiger als jedes kostenpflichtige Audit – die Daten liegen bereits auf Ihrem Server.
Wie oft sollte ich Logfiles analysieren?
Brauche ich Logs, wenn meine Website klein ist (unter 500 Seiten)?
Wie unterscheide ich den echten Googlebot von einem Imitator?
Wirkt sich die Crawl-Frequenz direkt auf das Ranking aus?
Was tun, wenn der Googlebot zu aggressiv crawlt und den Server überlastet?
Check it with SpiderHead
Free and local: run the audit on your own machine.



