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.

Ablauf der Server-Logfile-Analyse für das SEO-Audit.

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.

Faustregel: Hat Ihre Website mehr als 10.000 URLs oder wächst im GSC-Bericht der Bereich „Entdeckt – zurzeit nicht indexiert“ weiter, ist die Logfile-Analyse ein Muss und keine Kür.

Was die Logfile-Analyse liefert

100%

Echte Anfragen

Jede HTTP-Anfrage eines Crawlers wird im Logfile erfasst – ohne Stichproben und ohne Verzögerung durch Aggregation

≤1s

Zeitgenauigkeit

Zeitstempel auf Sekundenbasis zeigen Crawl-Muster nach Wochentag und Uhrzeit

3+

Bots in einer Quelle

Googlebot, Bingbot, Yandex und weitere – alle Crawler in einer Datei, vergleichbar in einer Ansicht

0

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 / PlattformStandardpfad zu den LogsHinweise
Nginx/var/log/nginx/access.logWird 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 → LogsOft nach Domains getrennt. Raw Access ist im cPanel-Interface verfügbar
Cloudflare Workers / EnterpriseLogpush-API → S3, R2, GCSNur im Enterprise-Tarif. Für Free/Pro: Workers Analytics Engine
AWS CloudFrontS3-Bucket, der in den Distribution-Einstellungen unter Logging konfiguriert istLogs alle 5–10 Minuten, gzip-komprimiert
Google Cloud / GCSCloud Logging → Export nach BigQuery oder GCSIdeal für große Datenmengen – SQL-Abfragen direkt in BigQuery ausführen
Beispiel zur Umsetzung im Code:
bash
# 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.log
Tipp zur Rotation: logrotate behält standardmäßig 7–14 Tage Logs. Für die SEO-Analyse brauchen Sie mindestens 30 Tage. Erhöhen Sie rotate 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.

text
# 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
Übersicht der Felder:
FeldSEO-RelevanzWorauf Sie achten sollten
IP-AdresseHochIP-Bereiche von Googlebot, Bingbot, Yandex – zum Filtern echter Crawler
TimestampHochCrawl-Frequenz und Zeitpunkt des letzten Besuchs bestimmter URLs
Request (Methode + URL)KritischWelche URLs gecrawlt werden: benötigte Seiten, Duplikate, Parameter, nicht existierende Pfade
HTTP-StatusKritisch200 (gut), 301/302 (Weiterleitungen), 404 (defekte Links), 500 (Serverfehler)
Gesendete BytesMittelAuffällig kleine Größe – Hinweis auf eine leere Seite oder eine Stub-Antwort
User-AgentKritischGooglebot 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.

bash
# 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 Googlebot
Verlassen Sie sich nicht allein auf den User-Agent. Spam-Bots fälschen den String Googlebot 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.

Kennzahl 1Crawl-Frequenz

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 Tage
Kennzahl 2Quote fehlerhafter Antworten

Anteil 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 %
Kennzahl 3Anteil der Weiterleitungen

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-Anfragen
Kennzahl 4Duplikate in den Logs

Gleicher 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 Inhalt
Kennzahl 5Wichtige Seiten ohne Crawl

Wichtige 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 Tagen
Kennzahl 6Unerwünschte Seiten im Crawl

Seiten, 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-Logs

Analyse-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

bash
# 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 -30

Screaming 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

python
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}')
BigQuery für Enterprise: Wenn Access-Logs mehrere Hundert GB umfassen, ist das lokale Parsen unpraktisch. Laden Sie sie nach BigQuery (GCS → BigQuery → geplante Abfrage) und werten Sie sie mit SQL aus. Die Analyse von 1 TB kostet rund 5 $.

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 LogsUrsacheLösung
Viele 404 vom GooglebotGelöschte Seiten, auf die noch externe oder interne Links verweisen301 auf die nächste aktive Seite + defekte interne Links entfernen
Parametrische URLs im CrawlUTM-Tags, Sortierungen und Sessions sind nicht in der robots.txt gesperrtDisallow in der robots.txt + Canonical auf die saubere URL auf den Seiten selbst
Weiterleitungsketten (A→B→C)Angesammelte Weiterleitungen nach einer UmstrukturierungAuf einen einzigen Sprung reduzieren – alle ausgehenden Links aktualisieren
Seiten /admin, /staging in den LogsServicebereiche sind nicht gesperrtDisallow /admin/ in der robots.txt + HTTP-Authentifizierung für Staging
5xx-Antworten an den GooglebotServerüberlastung bei Traffic-Spitzen oder Backend-FehlerTTFB optimieren, Caching einführen, Crawler-Rate-Limit konfigurieren
Wichtige Seite wird nicht gecrawltKeine internen Links, zu tief in der Hierarchie, nicht in der SitemapIn die Sitemap aufnehmen + interne Links von zentralen Seiten setzen
Duplikate mit und ohne wwwKeine 301-Weiterleitung auf die kanonische Domainversion eingerichtet301 von Non-www auf www (oder umgekehrt) auf Ebene von nginx/Apache
robots.txt blockiert benötigte JS/CSSStandard-Disallow /assets/ oder /static/ im TemplateSperre für kritische Ressourcen entfernen, die für das Rendering nötig sind
Beispiel zur Umsetzung im Code:
bash
# 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 -20

FAQ

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?
Bei stabilen Websites mindestens einmal pro Quartal. Nach größeren Änderungen – einer neuen Seitenstruktur, einem Relaunch oder der Veröffentlichung großer Mengen an Inhalten – sofort. Bei E-Commerce mit zehntausenden SKUs und aktiver Generierung parametrischer URLs monatlich. Zeigt die GSC einen auffälligen Rückgang der Crawl-Aktivität, sofort.
Brauche ich Logs, wenn meine Website klein ist (unter 500 Seiten)?
Bei kleinen Websites reicht die GSC meist aus. Sind die Rankings aber ohne erkennbaren Grund gefallen oder brauchen neue Seiten lange, bis sie im Index erscheinen, liefern die Logs schneller eine Antwort als jedes andere Tool. Eine einmalige Analyse dauert 30 Minuten und lohnt sich mindestens einmal als Kalibrierungs-Audit.
Wie unterscheide ich den echten Googlebot von einem Imitator?
Mit einer zweistufigen DNS-Verifizierung: Zuerst ein Reverse-Lookup der IP, die sich auf *.googlebot.com oder *.google.com auflösen muss. Dann ein Forward-Lookup dieses Hostnamens, der dieselbe IP liefern muss. Beide Schritte sind nötig: Reverse-DNS allein reicht nicht, weil jeder einen PTR-Eintrag setzen kann.
Wirkt sich die Crawl-Frequenz direkt auf das Ranking aus?
Crawl-Frequenz und Ranking sind getrennte Beobachtungen. Eine häufig gecrawlte Seite ist nicht automatisch stärker, und eine selten gecrawlte nicht automatisch schwach. Nutzen Sie die Logs, um Entdeckung und erneutes Crawlen zu verstehen, und prüfen Sie das Ranking anhand separater Suchdaten.
Was tun, wenn der Googlebot zu aggressiv crawlt und den Server überlastet?
Passen Sie die Crawl-Rate in der Google Search Console an (Settings → Crawl rate limit). Für bestimmte Bereiche können Sie Crawl-delay in der robots.txt nutzen, Google verspricht aber offiziell nicht, sie zu beachten. Zuverlässiger ist es, TTFB und Caching zu optimieren, damit der Server die Last ohne Einschränkung des Crawlings bewältigt.

Check it with SpiderHead

Free and local: run the audit on your own machine.

Try it