Website-Relaunch Masterclass - Teil 2 von 3
Teil 1: Vorbereitung & SEO-Planung
Teil 2: Umsetzung & Go-Live (dieser Artikel)
Teil 3: Monitoring & Optimierung
Website-Relaunch Teil 2: Umsetzung & Go-Live (2025)
Nach der sorgfältigen Vorbereitung aus Teil 1 folgt nun die kritische Umsetzungsphase. Hier entscheidet sich, ob Ihr Relaunch erfolgreich wird oder Monate der Arbeit zunichtemacht. In diesem Teil zeige ich die professionelle Implementation: von der Redirect-Umsetzung über Content-Migration bis hin zum perfekt orchestrierten Launch-Day.

~10 Min. Lesezeit · Veröffentlicht am
Staging-Umgebung einrichten
Identische Produktions-Kopie erstellen
Die Staging-Umgebung muss eine exakte Kopie der zukünftigen Live-Site sein. Hier werden alle Tests durchgeführt, bevor der echte Launch erfolgt.
Server-Konfiguration
- Gleiche PHP/Server-Version wie Production
- Identische SSL-Zertifikate (Let's Encrypt Staging)
- Htaccess/Nginx-Config übertragen
- Alle Extensions/Module installieren
- robots.txt auf "Disallow: /" setzen
Content & Datenbank
- Vollständige Datenbank-Kopie importieren
- Alle Medien-Dateien synchronisieren
- User-Generated Content übertragen
- CMS-Konfiguration anpassen
- Test-Accounts für verschiedene Rollen
Tracking & Analytics
- Separate GA4-Property für Staging
- Google Tag Manager Container duplizieren
- Heatmap-Tools auf Staging umstellen
- Search Console Staging-Property
- Monitoring-Tools konfigurieren
Staging-Zugriff sichern
# Apache .htaccess - Basic Auth für Staging
AuthType Basic
AuthName "Staging Area - Authorized Only"
AuthUserFile /path/to/.htpasswd
Require valid-user
# Nginx - Basic Auth
location / {
auth_basic "Staging Area";
auth_basic_user_file /etc/nginx/.htpasswd;
try_files $uri $uri/ /index.php?$args;
}
# Password-Datei erstellen
htpasswd -c /path/to/.htpasswd staging_user
# Password: staging2025! 301-Redirects implementieren
Redirect-Strategien nach Umfang
Redirect-Implementierung je nach Größe:
- < 100 URLs: Manuelle .htaccess-Einträge
- 100-1000 URLs: Script-generierte .htaccess
- 1000+ URLs: Datenbank-basierte Redirects + Wildcard-Rules
- 10.000+ URLs: CDN-Level Redirects (Cloudflare, etc.)
Apache .htaccess Redirects
# .htaccess - Professionelle Redirect-Implementierung
# 1. Domain-Wechsel (falls zutreffend)
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?alte-domain\.com [NC]
RewriteRule ^(.*)$ https://neue-domain.com/$1 [L,R=301]
# 2. HTTPS-Weiterleitung
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# 3. www vs. non-www normalisieren
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [L,R=301]
# 4. Spezifische URL-Redirects (high priority first)
Redirect 301 /alte-homepage.html https://neue-domain.com/
Redirect 301 /produkte/kategorie-a/ https://neue-domain.com/shop/neue-kategorie/
Redirect 301 /blog/alter-artikel.html https://neue-domain.com/blog/neuer-artikel/
# 5. Pattern-basierte Redirects
RedirectMatch 301 ^/produkte/(.*)$ https://neue-domain.com/shop/$1
RedirectMatch 301 ^/news/([0-9]{4})/([0-9]{2})/(.*)$ https://neue-domain.com/blog/$3
# 6. Parameter-Handling
RewriteCond %{QUERY_STRING} ^id=([0-9]+)$
RewriteRule ^produkt\.php$ /shop/produkt-%1/? [R=301,L]
# 7. Trailing Slash normalisieren
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/$ /$1 [R=301,L] Nginx Redirects
# Nginx Redirect-Konfiguration
server {
listen 80;
server_name alte-domain.com www.alte-domain.com;
return 301 https://neue-domain.com$request_uri;
}
server {
listen 443 ssl;
server_name neue-domain.com;
# Spezifische Redirects
location = /alte-homepage.html {
return 301 https://neue-domain.com/;
}
location /produkte/ {
rewrite ^/produkte/(.*)$ /shop/$1 permanent;
}
# Pattern-Redirects
location ~* ^/news/([0-9]{4})/([0-9]{2})/(.*)$ {
return 301 https://neue-domain.com/blog/$3;
}
# Fallback für nicht-gemappte URLs
location / {
try_files $uri $uri/ /index.php?$args;
}
} Redirect-Testing automatisieren
#!/bin/bash
# redirect_test.sh - Automatisiertes Redirect-Testing
echo "Testing Redirects..."
# CSV mit alten URLs einlesen und testen
while IFS=',' read -r old_url expected_new_url; do
actual_url=$(curl -s -I -L "$old_url" | grep -i "^location:" | tail -1 | awk '{print $2}' | tr -d '\r')
if [[ "$actual_url" == "$expected_new_url" ]]; then
echo "✓ $old_url → $actual_url"
else
echo "✗ $old_url → $actual_url (expected: $expected_new_url)"
fi
done < redirect_test_urls.csv
# Response-Code Testing
curl -s -o /dev/null -w "%{http_code} %{url_effective}\n" \
"https://staging.neue-domain.com/alte-seite.html" Content-Migration & Optimierung
Content-Migration Workflow
Bewährter Content-Migration Prozess:
- Export: Strukturierte Daten aus altem CMS exportieren
- Clean: HTML bereinigen, veraltete Tags entfernen
- Enhance: SEO-Optimierung, Meta-Daten verbessern
- Import: In neues CMS mit korrekten URLs importieren
- Verify: Stichproben prüfen, interne Links testen
Meta-Daten Optimierung
Primäres Keyword | Sekundäres Keyword | Marke
Bilder-SEO bei Migration
# Bilder-Optimierung Script (Python)
import os
from PIL import Image
import requests
def optimize_images(source_dir, target_dir):
for filename in os.listdir(source_dir):
if filename.lower().endswith(('.jpg', '.jpeg', '.png')):
# Original laden
img_path = os.path.join(source_dir, filename)
img = Image.open(img_path)
# Größe optimieren (max 1920px Breite)
max_width = 1920
if img.width > max_width:
ratio = max_width / img.width
new_size = (max_width, int(img.height * ratio))
img = img.resize(new_size, Image.Resampling.LANCZOS)
# WebP-Version erstellen
webp_filename = filename.rsplit('.', 1)[0] + '.webp'
webp_path = os.path.join(target_dir, webp_filename)
img.save(webp_path, 'WebP', quality=85, optimize=True)
# Original optimiert speichern
optimized_path = os.path.join(target_dir, filename)
img.save(optimized_path, optimize=True, quality=85)
# Verwendung
optimize_images('/old-site/images/', '/new-site/assets/images/') Technical SEO Implementation
XML-Sitemaps generieren
https://neue-domain.com/sitemap-pages.xml
2025-09-25T10:00:00+02:00
https://neue-domain.com/sitemap-products.xml
2025-09-25T10:00:00+02:00
https://neue-domain.com/sitemap-blog.xml
2025-09-25T10:00:00+02:00
https://neue-domain.com/sitemap-images.xml
2025-09-25T10:00:00+02:00
robots.txt für Relaunch
# robots.txt - Production Ready
User-agent: *
Allow: /
# Wichtige Sitemaps
Sitemap: https://neue-domain.com/sitemap.xml
Sitemap: https://neue-domain.com/sitemap-images.xml
# Crawl-Budget schonen
Disallow: /admin/
Disallow: /wp-admin/
Disallow: /search?
Disallow: /ajax/
Disallow: /*?print=
Disallow: /*?utm_
Disallow: /*?ref=
# Duplicate Content vermeiden
Disallow: /*?sort=
Disallow: /*?filter=
Disallow: /*?page=
Disallow: /*/page/
# Development/Test-Bereiche
Disallow: /dev/
Disallow: /staging/
Disallow: /test/
# Crawl-Delay für aggressive Bots
User-agent: AhrefsBot
Crawl-delay: 10
User-agent: SemrushBot
Crawl-delay: 10 Testing & Quality Assurance
Multi-Level Testing-Strategie
Technical Testing
- Screaming Frog Full-Site Crawl
- Google PageSpeed Insights Tests
- GTmetrix Performance Analysis
- W3C Markup Validation
- SSL/Security Header Check
SEO Testing
- Alle wichtigen URLs crawlbar
- Meta-Daten vollständig
- Schema Markup validiert
- Internal Links funktional
- Canonical Tags korrekt
User Experience Testing
- Cross-Browser Testing
- Mobile Responsiveness
- Form-Funktionalität
- Navigation & Usability
- Loading Performance
Automatisierte Test-Scripts
#!/bin/bash
# comprehensive_test.sh - Vollständiger Site-Test
echo "🔍 Starting comprehensive site testing..."
DOMAIN="https://staging.neue-domain.com"
REPORT_FILE="test_report_$(date +%Y%m%d_%H%M%S).txt"
echo "Testing Domain: $DOMAIN" > $REPORT_FILE
echo "Test Date: $(date)" >> $REPORT_FILE
echo "===========================================" >> $REPORT_FILE
# 1. HTTP Status Code Tests
echo "📊 Testing critical pages HTTP status..."
declare -a pages=(
"/"
"/produkte/"
"/blog/"
"/kontakt/"
"/impressum/"
"/datenschutz/"
)
for page in "${pages[@]}"; do
status=$(curl -s -o /dev/null -w "%{http_code}" "$DOMAIN$page")
if [ $status -eq 200 ]; then
echo "✅ $page: $status" | tee -a $REPORT_FILE
else
echo "❌ $page: $status" | tee -a $REPORT_FILE
fi
done
# 2. Redirect Tests
echo "🔄 Testing redirects..."
while IFS=',' read -r old_url new_url; do
final_url=$(curl -s -L -o /dev/null -w '%{url_effective}' "$old_url")
if [[ "$final_url" == "$new_url" ]]; then
echo "✅ Redirect: $old_url → $final_url" | tee -a $REPORT_FILE
else
echo "❌ Redirect: $old_url → $final_url (expected: $new_url)" | tee -a $REPORT_FILE
fi
done < redirect_test.csv
# 3. Performance Tests
echo "⚡ Testing performance..."
lighthouse_score=$(lighthouse $DOMAIN --only-categories=performance --output=json --quiet | jq '.categories.performance.score * 100')
echo "Performance Score: $lighthouse_score/100" | tee -a $REPORT_FILE
# 4. SEO Quick Tests
echo "🔍 Testing SEO basics..."
title_count=$(curl -s $DOMAIN | grep -o '<title>' | wc -l)
meta_desc=$(curl -s $DOMAIN | grep -i 'meta name="description"' | wc -l)
echo "Title tags: $title_count" | tee -a $REPORT_FILE
echo "Meta descriptions: $meta_desc" | tee -a $REPORT_FILE
echo "🎉 Testing complete. Report saved to: $REPORT_FILE" Critical Page Testing Checklist
Vor Launch unbedingt testen:
- Homepage: Alle CTAs, Navigation, Performance
- Top 10 Traffic-Seiten: Content, URLs, Meta-Daten
- Conversion-Pfade: Checkout, Kontaktformular, Newsletter
- 404-Seite: Custom Error Page mit Navigation
- XML-Sitemap: Korrekte URLs, aktuelle Timestamps
- robots.txt: Staging vs. Production Unterschiede
Launch-Vorbereitung
48 Stunden vor Launch
Final Pre-Launch Checklist
- □ DNS-TTL reduzieren: Auf 300 Sekunden (5 Min) für schnellere Propagation
- □ Backup erstellen: Vollständige alte Website + Datenbank sichern
- □ Team-Kommunikation: Launch-Plan an alle Stakeholder
- □ Monitoring-Tools: Alerts für Traffic-Drops aktivieren
- □ Rollback-Plan: Schritt-für-Schritt Rückgängigmachung dokumentiert
- □ Customer Service: FAQ für mögliche Nutzer-Probleme vorbereiten
Launch-Team Koordination
# Launch-Day Team Setup
Primary Launch Manager (SEO/Project Lead):
- Gesamtverantwortung & Koordination
- Monitoring & Performance-Tracking
- Stakeholder-Kommunikation
- Go/No-Go Entscheidungen
Technical Lead (Developer):
- DNS/Server-Konfiguration
- Live-Site Deployment
- Technical Troubleshooting
- Database-Migration
QA Lead (Tester):
- Live-Site Testing sofort nach Launch
- Issue-Dokumentation & Priorisierung
- User-Journey Verification
- Cross-Device Testing
Content Manager:
- Content-Überprüfung nach Migration
- Meta-Daten Verification
- Image/Media-Troubleshooting
- Social Media Updates
Communications Lead:
- Interne Team-Updates
- Customer-Communication bei Problemen
- Social Media Announcements
- PR/Marketing Koordination Launch-Day Execution
Launch-Day Timeline
Bewährter Launch-Day Schedule:
- 09:00: Team-Briefing & Final Go/No-Go Decision
- 10:00: DNS-Switch & Server-Deployment
- 10:15: Basic Functionality Tests
- 10:30: Google Search Console URLs submitten
- 11:00: Comprehensive QA Testing
- 12:00: First Performance Review
- 14:00: Social Media & Stakeholder Communication
- 16:00: End-of-Day Status Review
Launch-Sequence Step-by-Step
# Launch-Day Execution Commands
# 1. Final Staging Sync
rsync -avz --delete staging.neue-domain.com:/var/www/html/ production:/var/www/html/
mysqldump staging_db | mysql production_db
# 2. DNS-Switch (falls Domain-Wechsel)
# Bei Domain-Provider: A-Record auf neue IP setzen
# Alte Domain: Wildcard-Redirect auf neue Domain
# 3. SSL-Zertifikat aktivieren
certbot --apache -d neue-domain.com -d www.neue-domain.com
# 4. Apache/Nginx Reload
sudo systemctl reload apache2
# oder
sudo nginx -s reload
# 5. Sofortige Tests nach DNS-Propagation
dig neue-domain.com
curl -I https://neue-domain.com
curl -I https://www.neue-domain.com
# 6. Google Search Console
# Manuell: Neue Property hinzufügen
# API: Sitemap submitten
curl -X POST \
"https://www.googleapis.com/webmasters/v3/sites/https%3A%2F%2Fneue-domain.com%2F/sitemaps/https%3A%2F%2Fneue-domain.com%2Fsitemap.xml" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" Sofortmaßnahmen nach Go-Live
Erste 30 Minuten
- Homepage lädt korrekt
- Wichtigste 10 URLs funktional
- SSL-Zertifikat aktiv
- Redirects funktionieren
- Analytics empfängt Daten
Erste 2 Stunden
- Google Search Console Setup
- XML-Sitemap eingereicht
- Wichtigste URLs manuell crawlen lassen
- Performance-Monitoring aktiv
- Social Media Profile aktualisiert
Erste 8 Stunden
- Vollständiger Site-Crawl
- Form-Funktionalität getestet
- E-Commerce/Checkout getestet
- Mobile Performance verifiziert
- Team-Debrief & Issue-Log
Die ersten 48 Stunden
Intensives Monitoring Setup
# Monitoring-Dashboard für erste 48h
# Google Analytics Real-Time
- Active Users im Vergleich zur Baseline
- Traffic Sources (Organic, Direct, Referral)
- Page Views der wichtigsten Seiten
- Bounce Rate Anomalien
# Google Search Console
- Coverage Issues (neue 404s)
- Index Status wichtigster URLs
- Core Web Vitals Performance
- Click-through Rates
# Server-Monitoring
- Response Times
- Error Rates (4xx, 5xx)
- Server Load & Memory
- Database Performance
# Custom Alerts Setup
if organic_traffic < baseline_traffic * 0.7:
send_alert("Traffic drop > 30%")
if error_rate > 5%:
send_alert("High error rate detected")
if avg_response_time > 3000:
send_alert("Slow response times") Häufige 48h-Probleme & Quick-Fixes
Top 10 Launch-Day Issues:
- DNS-Propagation verzögert: Geduld, max 24h warten
- SSL-Zertifikat-Fehler: Mixed Content, HTTPS-Redirects prüfen
- Bilder laden nicht: Pfad-Probleme, CDN-Konfiguration
- Google-Indexierung verzögert: URLs manuell in GSC submitten
- Formular-Submissions fehlschlagen: CAPTCHA, Mail-Server prüfen
- Mobile Layout-Probleme: CSS-Konflikte, Responsive-Tests
- Performance-Verschlechterung: Caching, Image-Optimierung
- Analytics-Tracking fehlt: GTM-Konfiguration, Cookie-Consent
- Interne 404-Links: Content-Migration Fehler
- Redirect-Schleifen: .htaccess-Konflikte
Emergency-Rollback Procedure
# Notfall-Rollback Plan (nur bei kritischen Fehlern)
# Kriterien für Rollback:
# - > 70% Traffic-Verlust nach 4 Stunden
# - Site komplett unzugänglich
# - Massive 5xx Server-Errors
# - Conversion-Rate = 0
# Rollback Steps:
# 1. DNS zurück auf alte IP
# 2. Backup der alten Site wiederherstellen
# 3. Datenbank-Rollback
# 4. Stakeholder informieren
# 5. Post-Mortem planen
# Rollback Script
#!/bin/bash
echo "🚨 EMERGENCY ROLLBACK INITIATED"
# Backup neue Site (für spätere Analyse)
tar -czf new_site_backup_$(date +%Y%m%d_%H%M%S).tar.gz /var/www/html/
# Alte Site wiederherstellen
tar -xzf old_site_backup.tar.gz -C /var/www/html/
# DNS-Änderung rückgängig (manuell beim Provider)
echo "⚠️ Manual DNS rollback required"
echo "📞 Inform stakeholders about rollback" Was Sie in den ersten 48 Stunden erwarten können
- Traffic-Rückgang: 15-40% sind normal durch DNS-Propagation und Re-Indexing
- Ranking-Fluktuation: Keywords können temporär schwanken
- Indexing-Verzögerung: Google benötigt 24-72h für vollständige Re-Indexierung
- User-Feedback: Nutzer melden Probleme oder Verwirrung über Änderungen
- Performance-Schwankungen: Server-Load und Caching stabilisieren sich
Panik-Schwelle: Erst bei > 60% Traffic-Verlust nach 48h intensive Troubleshooting
Erfolgreicher Launch - Next Steps
Herzlichen Glückwunsch! Wenn die ersten 48 Stunden stabil verlaufen, haben Sie den kritischsten Teil gemeistert. Die nächsten Schritte behandelt Teil 3 unserer Serie:
- Woche 1-4: Recovery-Monitoring und Optimierung
- Monat 2-3: Performance-Analyse und ROI-Bewertung
- Langfristig: Continuous Improvement und Lessons Learned
➡️ Teil 3: Monitoring & Optimierung
"Ein gut geplanter und professionell durchgeführter Relaunch unterscheidet sich von einem improvisierten durch eine einfache Regel: Vorbereitung schlägt Panik, jedes Mal."
– 15 Jahre Relaunch-Erfahrung
Benötigen Sie professionelle Unterstützung während der kritischen Launch-Phase? Kontaktieren Sie mich für Launch-Day Begleitung und Emergency-Support.