HTTPs Migration How To - SMX München 2017
- 1. Bastian Grimm, Peak Ace AG | @basgr
Erfolgreich migrieren: Planung, Umsetzung, Review & Monitoring
HTTPS Migration How-To
- 2. 2 pa.ag
Keine Lust alles mitzuschreiben?
Dann notiere dir diesen Link:
https://pa.ag/smx17https
- 9. 9 @peakaceag pa.ag
Even if you don't believe in a “boost” …
Seit Januar ‘17 werden HTTP Login- und Kreditkartenfelder als “unsicher” angezeigt.
Zukünftig werden alle HTTP-URLs auf diese Weise markiert.
- 11. Was verändert sich, was bleibt? Komplett umziehen oder selektiv?
(siehe Philipps Slides: clk.me/relaunch)
Migrationsstrategie definieren
- 12. 12 @peakaceag pa.ag
Crawl-Budget während der Migration beachten
Wichtig: Wie lange dauert ein vollständiger Re-crawl meiner Seite?
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“ (siehe Screenshot) 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 mindestens je einmal:
Crawling, Logfiles & 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
HTTP URLs inventarisieren & dokumentieren
Must have: Logfiles, XML Sitemaps und Web-Site Crawl
Nice to have: Web- und Search Analytics (Trafficstarke bzw. URLs mit Top-Rankings)
Mode > List > Upload
Kleine Domains
Große Domains
- 17. 17 @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
Canonical Tags & weitere rel-Alternate Notationen
Bei dedizierter Mobile-Website entsprechende Annotation nicht vergessen!
Verwendet ihr RSS-Feeds? 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
- 20. 20 @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
- 21. 21 @peakaceag pa.ag
Mehrsprachiges Setup? hreflang-Ziele anpassen
Auch einzelne Länder 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
- 22. 22 @peakaceag pa.ag
Interne Verlinkung aktualisieren
Sich einfach auf die Weiterleitungen zu verlassen ist keine Migrationsstrategie!
Links zu anderen internen URLs im HTML Source Code
Links zu internen Imagefiles im HTML Source Code
Links zu internen Videofiles im HTML Source Code
Links zu internen Web Fonts im HTML Source Code
Links zu internen Javascript Files im HTML Source Code
Links zu internen CSS Files im HTML Source Code
Links zu anderen internen URLs in den JavaScript Files
Links zu internen Imagefiles in den JavaScript Files
Links zu internen CSS Files in den JavaScript Files
Links zu internen Imagefiles in den CSS Files
Links zu internen Web Fonts in den CSS Files
Jegliche andere interne Links.
- 23. 23 @peakaceag pa.ag
Vorsicht bei internen Weiterleitungen!
Weiterleitungsketten vermeiden; die alten HTTP-URLs müssen zukünftig direkt auf die
neue HTTPs-URL weiterleiten!
Quelle: Redirect Chain Report via DeepCrawl
xxxx
xxxx
xxxx
xxxx
xxxx
- 24. 24 @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
- 25. 25 @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
- 26. 26 @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
- 27. 27 @peakaceag pa.ag
rel=next/prev Paginierungen & Accelerated Mobile Pages
Nutzt ihr Googles Empfehlung zur Paginierung? Oder AMPs? Mark-Up Update!
RESSOURCE 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>
ALT
NEU
<script src="//ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
CDN
<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>
ALT
NEU
<script src="//ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
ODER AUCH
ODER AUCH
- 28. 28 @peakaceag pa.ag
HTTP Header updaten & Cookie Einstellungen anpassen
Sofern verwendet: X-Robots Header Tags anpassen. Chrome Dev. Tools verwenden!
X-Robots rel-canonical via Apache .htaccess
<Files theRequestedFile.pdf >
Header add Link 'https://www.example.com/ebook.html; rel="canonical"'
</Files>
Andere HTTP Header Varianten:
Link: <https://www.example.com/de/>; rel="alternate"; hreflang="de"
Link: <https://www.example.com/someurl>; rel="canonical"
Link: <https://cdn.example.com>; rel="dns-prefetch"
- 29. Vertrauen ist gut, Kontrolle besser: Zeit für einen Test-Crawl
der neuen HTTPS-Version!
Alles angepasst?
- 30. 30 @peakaceag pa.ag
Sicherstellen, dass keine HTTP-Links verbleiben!
Außerdem: Bevor die Migration tatsächlich durchgeführt wird, ist zu überprüfen,
ob tatsächlich keine HTTP-Anfragen mehr auf dem HTTPS-System stattfinden!
- 31. 31 @peakaceag pa.ag
Side-by-Side Vergleich des Crawls/der XML Sitemaps
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)
- 32. 32 @peakaceag pa.ag
Kurzer Exkurs: HTTPs spezifischer Crawl-Output
DeepCrawl reportet u.a. auch HSTS Header sowie unsichere Formulare
- 34. 34 @peakaceag pa.ag
HTTPs Properties anlegen & im GSC-Set zusammenführen
Properties für HTTP und HTTPs jeweils mit und ohne WWW = 4 Domains
Solltet ihr separate Mobile Domains verwenden, sind es 6 Domains 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/
- 35. 35 @peakaceag pa.ag
GSC Fetch & Render testen – dann an den Index senden!
Prüft, ob Google alle „requested components“ sauber inkludiert und darstellt!
- 36. 36 @peakaceag pa.ag
Disavow Links File übertragen
Besonders bei Domains mit problematischem Linkprofil: GSC Setup und Übertragung
des Files circa 48 Stunden vor dem Live-Switch erledigen!
- 37. 37 @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 übertragen werden.
- 38. 38 @peakaceag pa.ag
Geo-Targeting für gTLDs konfigurieren
Sofern verwendet bzw. notwendig (gTLDs wie .com) sind zusätzlich auch die
Einstellungen zum Handling von URL-Parametern zu synchronisieren!
- 39. 39 @peakaceag pa.ag
XML Sitemaps testen & neu übermitteln
Sofern verwendet bzw. funktional notwendig sind auch die Einstellungen zum Handling
von URL-Parametern zu synchronisieren!
- 42. 42 @peakaceag pa.ag
List Crawl der alten HTTP-URLs & manuelle SERP Kontrolle
HTTP-URLs bspw. in ScreamingFrog importieren (List Mode), hier sollten nur noch 301er
auftauchen. Zusätzlich manuelle Kontrolle der indexierten URLS mittels LinkClump.
1 3
4
2
- 44. Schaut euch unbedingt 4XXer sowie 5XXer Status Codes genau an, diese
sind idealerweise „live“ zu korrigieren.
Logfile-, GSC- & GA-Error Monitoring
- 51. 51 pa.ag
To-Do‘s & Themen nach einer erfolgreichen Migration:
Externe Links aktualisieren
Für sehr wertvolle, externe Verlinkungen könnte sich der Aufwand, selbige
aktualisieren zu lassen, durchaus lohnen.
HSTS Pre-loading
Implementation der “HTTP Strict Transport Security” um unnötige
Weiterleitungen (von HTTP auf HTTPS) zu vermeiden. Der Browser ruft die
Domain zukünftig direkt als HTTPs auf.
Content-Security-Policy implementieren
Automatisches Upgrade von alten HTTP-Elementen auf HTTPs, zusätzlicher
XSS Schutz
HTTP/2 verwenden
- 52. 52 pa.ag
Nutzt die Vorteile von HTTPs: HTTP/2 ist raketenschnell!
If you are using HTTPs
without HTTP/2 (SPDY)
you are doing it all wrong!
„
- 53. 53 @peakaceag pa.ag
Side-by-Side Performance Vergleich
HTTPs ist (ohne weiteres Zutun) etwas langsamer: Vergleicht eure Ergebnisse
miteinander. Klares Ziel: Keinesfalls langsamer als vorher!
Ausprobieren: https://www.webpagetest.org/