4. 4 @peakaceag pa.ag
Jede (große) Veränderung birgt (zahlreiche) Chancen!
Aber aufgepasst: Der Preis fürs Scheitern ist hoch!
Inspired by @pip_net: http://pa.ag/2jcBr6c
Risiko Chance
User-Akzeptanz Einmalige Gelegenheit, Dinge signifikant besser zu machen
Komplexität Greenfield-Projekt: Alles kann in Frage gestellt werden
Stillstand Beste Chance “to get shit done”
Störungen Möglichkeit „Altlasten & historische Probleme" zu beseitigen
Politik Agiler als das reguläre, tägliche Geschäft
Performance Überdenken: RWD/Dynamic Serving, HTTPS, URL Design etc.
5. 5 @peakaceag pa.ag
Was ist eure Zielsetzung für die Migration?
Das richtige Mindset ist super, super wichtig!
Ich will möglichst nichts/wenig
verlieren, ist nicht wirklich die
richtige Zielsetzung für eine
Migration!
„
6. 6 @peakaceag pa.ag
Migrationstypen und mögliche Auswirkungen auf SEO
Mehrere Varianten können sich überschneiden – oder gleichzeitig umgesetzt werden...
Inspired by @jonoalderson: http://pa.ag/2xUCMnJ
Type Example
Hosting migrations You’re changing hosting or CDN provider(s)
You’re changing, adding, or removing server locations
You’re changing your tech stack/caching/lbs
Software migrations You’re changing CMS (or it's version/plugins, etc.)
You’re changing the language used to render the website
You’re merging platforms; e.g., a blog which operated on a separate domain
Domain migrations You’re changing the main domain of your website
You’re buying/adding new domains/subdomains to your ecosystem
You’re moving a website, or part of a website, between domains
Template migrations You’re changing the layout/structure/navigation of important pages
You’re adding or removing template components
You’re changing elements in your code, like title, canonical, or hreflang tags
... und es gibt noch mehr: Design Migrationen, Strategie Migrationen, Content Migrationen, Protokoll Migrationen.
7. 7 @peakaceag pa.ag
Wählt einen iterativen, mehrstufigen Ansatz
Debugging und ein möglicher Rollback würden, durch das gleichzeitige Durchführen
aller Änderungen, zu einer fast unmöglichen Aufgabe werden!
Source: http://pa.ag/2yJqT1N
8. 8 @peakaceag pa.ag
Achtet auf jedes Detail!
Sorgfältige Dokumentation, genaue Definition der
Anforderungen und fortlaufende Tests sind unerlässlich!
9. 9 @peakaceag pa.ag
Um Hilfe bitten…
… und am besten jemanden fragen, der diese Aufgabe
schon einmal erfolgreich gemeistert hat.
12. 12 @peakaceag pa.ag
Crawl Budget während der Migration beachten
Wichtig: Wie lange dauert ein vollständiger Recrawl meiner Seite (theoretisch)?
▪ Um den Protokollwechsel zu realisieren, muss
Google die Domain vollständig neu crawlen
und alle URLs abrufen.
▪ Bei einer Domain mit bspw. 100.000 Unter-
seiten müsste Google also 200.000 URLs
verarbeiten (Redirects).
▪ Bei einer durchschnittlichen Anzahl von 30.000
„Pages crawled/day“ würde das demnach
mindestens ~7 Tage dauern.
▪ Die Annahme ist nur „halb valide“, da nicht alle
URLs nacheinander einmal abgerufen werden.
13. 13 @peakaceag pa.ag
You‘ll be needing tools… lots of them!
Vieles ist persönlicher Geschmack, aber ihr benötigt mindestens:
einen Crawler, Logfile Auswertung sowie Search Intelligence – und ja, das kostet Geld!
14. 14 @peakaceag pa.ag
Pre-Migration – Website Health Check & Clean-up
Sauber optimierte Domains lassen sich deutlich einfacher und effizienter migrieren.
Das Risiko von Verlusten sinkt drastisch, wenn vorab aufgeräumt wird!
▪ Google Search Console: manuelle Maßnahmen,
Serverfehler (DNS, 5XXer), Mark-up validation
Errors (AMP, schema.org, Rich Cards), robots.txt
▪ Web Crawl: interne Redirects (& Ketten), Broken
URLs und interne Verlinkung
▪ Logfiles: Broken URLs, auffällige Statuscodes,
Crawler-Traps
▪ Algo Issues? Mit Panda, Penguin & Co.
umzuziehen, ist wenig sinnvoll…
16. 16 @peakaceag pa.ag
Alle URLs inventarisieren & dokumentieren #1
Absolute Must-haves: vollständiger Website Crawl, Server Logfiles & XML-Sitemaps
Mode > List > Upload
Kleine Domains
Große Domains
17. 17 @peakaceag pa.ag
Alle URLs inventarisieren & dokumentieren #2
Zusätzlich: Holt euch jeweils die URLs, die stark verlinkt sind, viel Traffic bringen, am
meisten ge-shared wurden etc.
18. 18 @peakaceag pa.ag
Tägliches Keyword Ranking Monitoring etablieren
Erfassen des Status Quo kritischer Rankings bzw. Keywords; ändern der Monitoring
Frequenz auf „täglich“ für möglichst aktuelle Daten
19. 19 @peakaceag pa.ag
Status Quo Performance Benchmark etablieren
Lighthouse (via Chrome Dev Tools) oder webpagetest.org liefern relevante Metriken
Wichtig: Nicht nur die Homepage sondern auch Kategorie / Produktseiten erfassen
21. 21 @peakaceag pa.ag
Staging/Test Server bereitstellen
Und bitte unbedingt entsprechend sichern, die Inhalte sollen keinesfalls vorab im
Index landen (u.a. Duplicate Content Problematik)
Methodik Vorteile Nachteile
noindex (Meta Tag/Header)
- Externe Tools können ohne gesonderte
Freischaltung zugreifen
- URLs werden definitiv nicht indexiert
- Indexierungsregeln nicht vollständig testbar
(alles noindex)
- Crawl Budget Waste
robots.txt
- Externe Tools können ohne gesonderte
Freischaltung zugreifen
- Kein Crawl Budget Waste
- Indexierungsregeln nicht vollständig testbar
(nur mit robots.txt Override)
- Falls angelinkt, erscheinen Test-URLs mglw. im
Index (ohne Titel/Metas)
Passwort gesichert (.htaccess)
- Kein Crawl Budget Waste
- URLs werden definitiv nicht indexiert
- Alles sauber zu testen
- Externe Tools müssen mit Passwort
Authentifizierung umgehen können
IP-basierte Freischaltung
- Kein Crawl Budget Waste
- URLs werden definitiv nicht indexiert
- Alles sauber zu testen
- Externe Tools müssen mit IP-basierter
Authentifizierung umgehen können
VPN - Totsicher!
- So sicher, dass das nur ganz, ganz wenige Tools
überhaupt hinbekommen
23. 23 @peakaceag pa.ag
Canonical Tags & weitere rel-alternate Notationen
Bei einer standalone mobile Website entsprechende Annotation nicht vergessen! RSS-
Feeds werden verwendet? Auch hier muss angepasst werden!
CANONICAL TAG
<link href="http://www.example.com/deep/url" rel="canonical" />
<link href="https://www.example.com/deep/url" rel="canonical" />
ALT
NEU
<link rel="alternate" media="only screen and (max-width: 640px)" href="http://m.example.com/page-1" />
<link rel="alternate" media="only screen and (max-width: 640px)" href="https://m.example.com/page-1" />
ALT
NEU
MOBILE TAG
24. 24 @peakaceag pa.ag
Mehrsprachiges Setup? hreflang-Ziele anpassen
Auch einzelne Länder sind problemlos möglich, wichtig ist nur, dass der Kreisbezug passt.
HREFLANG
<link rel="alternate" hreflang="de" href="http://www.example.com/de/" />
ALT
<link rel="alternate" hreflang="fr" href="http://www.example.com/fr/" />
ALT
<link rel="alternate" hreflang="de" href="https://www.example.com/de/" />
NEU
<link rel="alternate" hreflang="x-default" href="http://www.example.com/" />
ALT
<link rel="alternate" hreflang="fr" href="https://www.example.com/fr/" />
NEU
<link rel="alternate" hreflang="x-default" href="https://www.example.com/" />
NEU
25. 25 @peakaceag pa.ag
rel=next/prev Paginierungen & Accelerated Mobile Pages
Nutzt ihr Googles Empfehlung zur Paginierung? Oder AMPs? Mark-up Update!
PAGINIERUNG
<link href="http://www.example.com/deep/url?page=1" rel="prev" />
<link href="https://www.example.com/deep/url?page=1" rel="prev" />
ALT
NEU
<link href="http://www.example.com/deep/url?page=3" rel="next" />
ALT
<link href="https://www.example.com/deep/url?page=3" rel="next" />
NEU
AMP
<link rel="amphtml" href="http://www.example.com/amp/" />
<link rel="amphtml" href="https://www.example.com/amp/" />
ALT
NEU
26. 26 @peakaceag pa.ag
Alle internen Links müssen angepasst werden!
Denn: Sich einfach auf interne Redirects zu verlassen ist keine Migrationsstrategie!
▪ Links zu anderen
internen URLs
▪ Links zu internen
Bild Dateien
▪ Links zu internen
Video Dateien
▪ Links zu internen
Webfonts
▪ Links zu internen
JavaScript Dateien
▪ Links zu internen
CSS Dateien
JS
HTML
Source Code
27. 27 @peakaceag pa.ag
Auch Verlinkungen IN JavaScript Dateien anpassen
Denn: Sich einfach auf interne Redirects zu verlassen ist keine Migrationsstrategie!
▪ Links zu anderen
internen URLs
▪ Links zu internen
CSS Dateien
JAVASCRIPT
Dateien
▪ Links zu internen
Bild Dateien
28. 28 @peakaceag pa.ag
Sowie auch Verlinkungen IN den CSS Dateien
Denn: Sich einfach auf interne Redirects zu verlassen ist keine Migrationsstrategie!
▪ Links zu internen
Bild Dateien
▪ Links zu internen
Webfonts
CSS
Dateien
▪ Weitere interne Links
29. 29 @peakaceag pa.ag
Vorsicht bei vorhandenen internen Weiterleitungen!
Weiterleitungsketten vermeiden; die alten HTTP-URLs müssen zukünftig direkt auf die
neuen HTTPs-URLs weiterleiten!
Quelle: Redirect Chain Report via DeepCrawl
xxxx
xxxx
xxxx
xxxx
xxxx
30. 30 @peakaceag pa.ag
XML-Sitemaps aktualisieren #1
Wichtig: Bei Verwendung des Sitemap Index Files muss auch hier eingegriffen werden!
Solltet ihr die Sitemap in der robots.txt referenzieren, ist die URL dort zu aktualisieren.
<url>
<loc>http://www.example.com/</loc>
<xhtml:link rel="alternate" hreflang="x-default" href="http://www.example.com/" />
<xhtml:link rel="alternate" hreflang=“de" href="http://www.example.com/de/" />
<xhtml:link rel="alternate" hreflang="fr" href="http://www.example.com/fr/" />
<xhtml:link rel="alternate" media="only screen and (max-width: 640px)" href="http://m.example.com/" />
<image:image>
<image:loc>http://www.example.com/ich-bin-ein-bild.jpg</image:loc>
</image:image>
<video:video>
<video:content_loc>http://www.example.com/ich-bin-ein-video.flv</video:content_loc>
</video:video>
</url>
1
2
3
4
5
6
7
8
9
10
11
12
13
ALT
31. 31 @peakaceag pa.ag
XML-Sitemaps aktualisieren #2
Wichtig: Bei Verwendung des Sitemap Index Files muss auch hier eingegriffen werden!
Solltet ihr die Sitemap in der robots.txt referenzieren, ist die URL dort zu aktualisieren.
<url>
<loc>https://www.example.com/</loc>
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.example.com/" />
<xhtml:link rel="alternate" hreflang=“de" href="https://www.example.com/de/" />
<xhtml:link rel="alternate" hreflang="fr" href="https://www.example.com/fr/" />
<xhtml:link rel="alternate" media="only screen and (max-width: 640px)" href="https://m.example.com/" />
<image:image>
<image:loc>https://www.example.com/ich-bin-ein-bild.jpg</image:loc>
</image:image>
<video:video>
<video:content_loc>https://www.example.com/ich-bin-ein-video.flv</video:content_loc>
</video:video>
</url>
1
2
3
4
5
6
7
8
9
10
11
12
13
NEU
32. 32 @peakaceag pa.ag
Structured Data Update (schema.org)
Auch die Referenzen des schema.org Mark-ups sind zu aktualisieren!
Achtung: Die Kurznotation „//schema.org“ validiert gemäß Testing Tool derzeit nicht!
<script type="application/ld+json"> {
"@context": "http://schema.org", "@type": "Product", "aggregateRating": { "@type": "AggregateRating", "ratingValue": "4.5", "reviewCount":
"100" },
"description": "Hier stet eine tolle Produktbeschreibung",
"name": "Und hier der super Produktname",
"image": "http://www.example.com/ich-bin-ein-bild.jpg",
"offers": { "@type": "Offer", "availability": "http://schema.org/InStock", "price": "55.00", "priceCurrency": "EUR" }
} </script>
ALT
1
2
3
4
5
6
7
8
<script type="application/ld+json"> {
"@context": "https://schema.org", "@type": "Product", "aggregateRating": { "@type": "AggregateRating", "ratingValue": "4.5",
"reviewCount": "100" },
"description": "Hier stet eine tolle Produktbeschreibung",
"name": "Und hier der super Produktname",
"image": "https://www.example.com/ich-bin-ein-bild.jpg",
"offers": { "@type": "Offer", "availability": "https://schema.org/InStock", "price": "55.00", "priceCurrency": "EUR" }
} </script>
NEU
1
2
3
4
5
6
7
8
33. 33 @peakaceag pa.ag
Update von Links zu CDNs & anderen “Resource Hints”
Dateien, die auf einem CDN liegen müssen nun ebenfalls via HTTPS aufgerufen werden,
gleiches gilt für Direktiven wie preconnect, dns-prefetch etc.
Resource Hints
<script src="http://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
Old
New
<script src="//ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
CDN
<link rel="preconnect" href="http://cdn.example.com" pr="0.42">
<link rel="preconnect" href=" https:// cdn.example.com" pr="0.42">
Old
New
<link rel="preconnect" href="//cdn.example.com" pr="0.42">
Alternatively
Alternatively
35. 35 @peakaceag pa.ag
Aus ALT wird NEU!
Gilt analog für alle Migrationsszenarien: Verweise (Links)
im alten werden durch das neue Format ersetzt.
36. 36 @peakaceag pa.ag
Alles angepasst?
Vertrauen ist gut, Kontrolle ist besser: Zeit für einen
Test-Crawl der neuen HTTPS-Version!
37. 37 @peakaceag pa.ag
Sicherstellen, dass keine Links auf HTTP-URLs verbleiben!
Wichtig: Bevor die Migration tatsächlich durchgeführt wird, ist zu überprüfen,
ob tatsächlich keine HTTP-Anfragen mehr auf dem HTTPS-System stattfinden!
38. 38 @peakaceag pa.ag
Side-by-Side Vergleich der beiden Crawls
Um sicherzustellen, dass der Content 1:1 so verfügbar ist wie auf der HTTP-Variante,
unbedingt das Inventar vergleichen (HTTP vs. HTTPs z.B. via ScreamingFrog+Excel)!
39. 39 @peakaceag pa.ag
Kurzer Exkurs: HTTPs spezifischer Crawl Output
DeepCrawl reportet u.a. auch HSTS Header sowie unsichere Formulare
41. 41 @peakaceag pa.ag
HTTPs Properties anlegen (und GSC-Set einrichten)
Properties für HTTP und HTTPs jeweils mit und ohne WWW = 4 Domains
Bei einer separaten mobile Subdomain sind es 6 Properties insgesamt!
Voraussetzungen für eine Migration:
▪ Keine manuellen Maßnahmen
▪ Keine signifikante Menge an Crawl Errors
(DNS, Erreichbarkeit)
▪ Keine Probleme mit den XML-Sitemaps
▪ Valides Structured bzw. Rich Cards Mark-
up, dito keine AMP und hreflang-Fehler
http://xxxxxxx.de/
https://xxxxxxx.de/
http://www.xxxxxxx.de/
https://www.xxxxxxx.de/
https://www.xxxxxxx.de/
http://www.xxxxx.de/
42. 42 @peakaceag pa.ag
Disavow Links File rechtzeitig übertragen
Besonders bei Domains mit „problematischem“ Linkprofil:
GSC Setup und Übertragung des Files mind. 48 Stunden vor dem Live-Switch erledigen!
43. 43 @peakaceag pa.ag
Bevorzugte Domain sowie ggf. Crawl Rate einstellen
Eigentlich sind Einstellungen zur Crawl Rate überflüssig, wurden diese aber verwendet,
sollte hier zur Sicherheit ebenfalls der Ursprungszustand hergestellt werden.
44. 44 @peakaceag pa.ag
Geotargeting für gTLDs (Verzeichnisse) konfigurieren
Sofern verwendet bzw. notwendig (gilt auch bei Verzeichnissen auf gTLDs wie .com)
45. 45 @peakaceag pa.ag
GSC Fetch & Render testen
Prüft, ob Google alle „requested Components“ sauber inkludiert und darstellt!
46. 46 @peakaceag pa.ag
XML-Sitemaps testen & neu übermitteln
Sofern verwendet bzw. funktional notwendig, sind auch die Einstellungen zum Handling
von URL-Parametern zu synchronisieren!
49. 49 @peakaceag pa.ag
Einige Leute sagen, dass nun alle Redirects gleich sind…
Aber: Alles was wir für diesen Kunden getan haben, war die 302/307 auf 301-
Weiterleitungen umzustellen und einige Ketten aufzulösen!
50. 50 @peakaceag pa.ag
Nutze das GSC “Site Move” Feature
Beachte: Es funktioniert nur bei Domain Migrationen!
51. 51 @peakaceag pa.ag
List Crawl der alten HTTP-URLs & manuelle SERP-Kontrolle
Alte URLs in ScreamingFrog importieren (List Mode, follow Redirects), hier dürfen nur
noch 301er auftauchen. Zusätzlich manuelle Kontrolle indexierter URLs mittels LinkClump.
1 3
4
2
52. 52 @peakaceag pa.ag
Ernsthaft: Prüft eure Weiterleitungen!
Das häufigste Problem bei Migrationen, die schiefgehen:
fehlende oder falsche Redirects!
54. 54 @peakaceag pa.ag
Logfile-, GSC- & GA-Error Monitoring
Schaut euch unbedingt 4XXer sowie 5XXer Status Codes
genau an, diese sind idealerweise „live“ zu korrigieren.
59. 59 @peakaceag pa.ag
Kompletter Crawl der neuen Domain
Re-Test: keine kaputten URLs (4/5XXer), Tracking vorhanden,
Metas & andere Tags korrekt, Indexierungsregeln, etc.
60. 60 @peakaceag pa.ag
Vollständiger Test nach WENN… DANN… Logik:
… wenn Google News Listings vorhanden sind, dann teste die Google News Sitemap.
… wenn du international arbeitest, dann teste hreflang-Tags/Sitemap Notationen.
… wenn Bewertungen (Feat. Snippets) vorhanden sind, dann teste schema.org Mark-up.
… wenn PPC Anzeigen geschaltet sind, dann update & teste die Landing Page URLs.
… wenn SSL auch auf anderen Subdomains genutzt wird, dann testet auch diese.
… etc.
62. 62 @peakaceag pa.ag
Crawl Frequenz in der GSC beobachten
Kurzfristige Spitzen sind völlig normal,
dramatische Einbrüche eher nicht!
63. 63 @peakaceag pa.ag
Macht einen Side-by-Side Vergleich der Performance
HTTPs ist idR. etwas langsamer: Vergleicht eure Ergebnisse miteinander.
Klares Ziel: keinesfalls langsamer als vorher (für HTTPs immer HTTP/2 nutzen)
Ausprobieren: https://www.webpagetest.org/
64. 64 @peakaceag pa.ag
Anpassen/Überarbeiten der externen Verlinkung
Nicht jede Linkquelle muss aktualisiert werden; konzentriert euch auf die stärksten
Domains (bspw. via LRT Power*Trust oder Majestic TrustFlow).
Quelle: Majestic
65. 65 @peakaceag pa.ag
Ganz wichtig: geduldig sein!
Re-Crawling, Neuberechnung & die Vererbung von
„Trust“ kann unter Umständen einige Wochen dauern…
66. 66 @peakaceag pa.ag
Insbesondere bei neuen URLs reichen zwei Wochen nicht:
Quelle: http://pa.ag/2htz26D
[…] it can take two
weeks for some sites
but for larger sites,
it is more like three
months, not even
close to two weeks.
„
67. 67 @peakaceag pa.ag
Idealerweise sollte es so aussehen #1
Domain Migration (von “de” auf “com”), keine weiteren Änderungen; nach 6 Wochen
vollständig wiederhergestellt!
Source: Searchmetrics
68. 68 @peakaceag pa.ag
Idealerweise sollte es so aussehen #2
Protokoll Migration: von HTTP auf HTTPS; 2 Wochen Visibility Abfall (-25 %) – jetzt
wieder aufwärts!
Source: Searchmetrics
70. 70 @peakaceag pa.ag
#1 Mobile-Friendly Bulk Testing Tool
Auf Basis der Google API, mit Screenshots der Ergebnisse sowie Im- & Export
Check it out: https://technicalseo.com/seo-tools/mobile-friendly/
71. 71 @peakaceag pa.ag
#2 hreflang Bulk Testing Tool
hreflang-Tag Testing, auch auf Basis von XML Sitemap Files (verschiedenen User-Agents)
Check it out: https://technicalseo.com/seo-tools/hreflang/
72. 72 @peakaceag pa.ag
#3 Bulk Testing von Redirects & anderen Header
HTTP-Status-Codes (Errors, Redirects etc.) at scale: httpstatus.io
Check it out: https://httpstatus.io/
73. 73 @peakaceag pa.ag
#4 Simuliert Googlebot für mobile mit JS Rendering!
Super easy mit ScreamingFrog, achtet hier insbesondere auf den gerenderten Output!
Auch hilfreich: Extract > Xpath > //head/link[@rel="amphtml"]/@href
74. 74 @peakaceag pa.ag
#5 Nicht vergessen: Bilder mit umziehen!
Achte beim Ändern von URLs/Domains darauf, auch die Regeln für 301-Redirects von
Bildern zu implementieren.
Read the entire post: http://pa.ag/2yJtTLz
75. 75 @peakaceag pa.ag
#6 Auch die robots.txt Datei mit umziehen!
Achte beim Domainwechsel darauf, auch den Inhalt der robots. txt zu übertragen!
76. 76 @peakaceag pa.ag
#7 HTTP-503 ist dein bester Freund
Kombiniere den Statuscode mit “revisit-after“, um das Crawling kurzfristig zu drosseln;
niemals an Stelle dessen “noindex" /4xx verwenden!
Source: http://pa.ag/2xRiA5T
Webmasters should return a 503-HTTP header for all
the URLs participating in the blackout […] Googlebot's
crawling rate will drop when it sees a spike in 503 […]
as Googlebot is currently configured, it will halt all
crawling of the site if the site’s robots.txt file returns
a 503 status code for robots.txt.
„
77. 77 @peakaceag pa.ag
#8 Die GSC Verifikation via DNS ist super hilfreich
Keinen Ärger mehr mit fehlenden Meta-Tags oder HTML Dateien – plus bei neuen
Frontends kann auch vorab verifiziert werden (ohne dass die Seite schon „live“ ist)!
More: http://pa.ag/2yJ7xtH
78. 78 @peakaceag pa.ag
#9 Korrigiere Weiterleitungsketten
Insbesondere bei alten/großen Seiten verschwenden diese Mehrfach-Anfragen
wertvolle Leistung, Geschwindigkeit und unnötig viel Crawl-Budget!
79. 79 @peakaceag pa.ag
#10 Vorsicht: JavaScript Frameworks sind weiterhin heikel!
Schaut euch Bartosz' umfangreiche Recherche zu Crawlability und Indexierbarkeit an.
Read more: http://pa.ag/2qLqlqH
82. 82 pa.ag@peakaceag
Wir wachsen: 25+ Performance Marketing Jobs in Berlin!
Sprecht mich gerne jederzeit an – oder meldet euch via jobs.pa.ag. Wir freuen uns!