Zum Inhalt springen

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)

· von

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.

Website-Relaunch: Umsetzung & Go-Live – Symbolbild

~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:

  1. Export: Strukturierte Daten aus altem CMS exportieren
  2. Clean: HTML bereinigen, veraltete Tags entfernen
  3. Enhance: SEO-Optimierung, Meta-Daten verbessern
  4. Import: In neues CMS mit korrekten URLs importieren
  5. 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:

  1. DNS-Propagation verzögert: Geduld, max 24h warten
  2. SSL-Zertifikat-Fehler: Mixed Content, HTTPS-Redirects prüfen
  3. Bilder laden nicht: Pfad-Probleme, CDN-Konfiguration
  4. Google-Indexierung verzögert: URLs manuell in GSC submitten
  5. Formular-Submissions fehlschlagen: CAPTCHA, Mail-Server prüfen
  6. Mobile Layout-Probleme: CSS-Konflikte, Responsive-Tests
  7. Performance-Verschlechterung: Caching, Image-Optimierung
  8. Analytics-Tracking fehlt: GTM-Konfiguration, Cookie-Consent
  9. Interne 404-Links: Content-Migration Fehler
  10. 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.