Shopware Migrationen und 301-er Weiterleitungen auf Apache / NGINX

von | Nov. 26, 2025 | Shopware, Shopware 6, Shopware Einstellungen, Shopware Entwicklung, Shopware SEO | 0 Kommentare

Bei Shopware-Migrationen von Version 5 zu 6 oder bei Shop-Relaunches ist die professionelle Umsetzung von 301 Weiterleitungen entscheidend für den Erhalt deiner SEO-Rankings und organischen Traffic. Als Shopware-Agentur begleiten wir Migrationsprojekte, bei denen oft tausende URLs korrekt weitergeleitet werden müssen. 301 Weiterleitungen auf nginx und Apache erfordern dabei besondere Sorgfalt – insbesondere bei Shopware-Installationen mit mehreren Sales Channels, wo domain-spezifische Konfigurationen zwingend notwendig sind. In diesem praxisorientierten Leitfaden teilen wir unsere Erfahrung aus Shopware-Migrationen und zeigen dir, wie du 301 Weiterleitungen professionell implementierst, Performance-Probleme vermeidest und typische Fehler in Multi-Shop-Umgebungen umgehst. Unser Fokus liegt dabei auf real erprobten Lösungen für Shopware 5 zu 6 Migrationen, Sales Channel Management und automatisierter Generierung von Massen-Weiterleitungen.

Übersicht: 301 Weiterleitungen bei Shopware-Migrationen

1. Grundlagen von 301 Weiterleitungen für Shopware-Shops

Eine 301-Weiterleitung ist ein permanenter HTTP-Statuscode, der Suchmaschinen und Browser darüber informiert, dass eine Ressource dauerhaft an einen neuen Ort verschoben wurde. Bei Shopware-Migrationen ist dies das wichtigste Werkzeug, um SEO-Rankings und organischen Traffic zu erhalten. Im Gegensatz zu temporären 302-Weiterleitungen signalisiert der 301-Status, dass die alte URL nicht mehr zurückkehren wird und die neue URL als kanonische Adresse betrachtet werden soll.

Für Shopware-Betreiber ist dies besonders kritisch: Suchmaschinen wie Google übertragen bei korrekter Implementierung bis zu 90-99% des PageRank und der Link-Autorität auf die neue URL. Bei einer typischen Shopware 5 zu 6 Migration können das mehrere Jahre SEO-Arbeit sein, die ohne professionelle 301 Weiterleitungen verloren gehen würden.

Warum 301 Weiterleitungen bei Shopware-Migrationen unverzichtbar sind

Als Shopware-Agentur haben wir bei Migrationsprojekten die Auswirkungen fehlender oder fehlerhafter Weiterleitungen erlebt. Die Konsequenzen sind deutlich messbar:

  • Traffic-Einbrüche von 40-70%: Ohne Weiterleitungen verlieren Shops innerhalb weniger Wochen den Großteil ihres organischen Traffics
  • Verlust von Rankings: Hart erkämpfte Top-Platzierungen bei Google verschwinden, wenn alte URLs auf 404-Fehler laufen
  • Negative Nutzererfahrung: Kunden, die über Bookmarks oder externe Links kommen, landen auf Fehlerseiten
  • Verlust von Backlink-Wert: Hunderte oder tausende wertvolle Backlinks verlieren ihre Wirkung
  • Conversion-Verluste: Kunden, die auf 404-Seiten landen, brechen den Kaufprozess ab

Shopware-spezifische Szenarien für 301 Weiterleitungen

  • Shopware 5 zu 6 Migration: URL-Strukturen ändern sich grundlegend – von /detail/index/sArticle/123 zu SEO-optimierten URLs wie /produkt/artikelname
  • Kategorie-Umstrukturierungen: Bei Navigationsänderungen verschieben sich Kategorien in der URL-Hierarchie
  • Sales Channel Launches: Neue Sales Channels mit eigenen Domains erfordern präzise Weiterleitungs-Konfigurationen
  • SEO-URL-Optimierungen: Nachträgliche Verbesserung von Produkt- und Kategorienamen in URLs
  • Domain-Migration: Umzug von alter auf neue Hauptdomain inkl. aller Unterseiten
  • Hersteller-Seiten-Restrukturierung: Änderungen in der Hersteller-URL-Struktur nach Updates

In Multi-Shop-Umgebungen mit mehreren Sales Channels wird die Situation noch komplexer: Hier müssen Weiterleitungen domain-spezifisch konfiguriert werden, damit sie nur für den jeweiligen Shop greifen und nicht versehentlich andere Sales Channels beeinflussen. Dies ist eine der häufigsten Fehlerquellen, die wir bei Shopware-Projekten sehen.

301 Weiterleitungen Shopware Migration – zurück zur Übersicht

2. Shopware 5 zu 6 Migration: URL-Strukturen und Herausforderungen

Die Migration von Shopware 5 zu Shopware 6 ist einer der anspruchsvollsten Anwendungsfälle für 301 Weiterleitungen. Die URL-Architektur hat sich zwischen den Versionen fundamental geändert, was systematisches URL-Mapping und präzise Weiterleitungskonfiguration erfordert.

Grundlegende Unterschiede in der URL-Struktur

Shopware 5 verwendete oft technische URLs mit Parametern, während Shopware 6 auf vollständig SEO-optimierte URL-Pfade setzt:

Shopware 5 Produktdetailseite:

https://shop.de/detail/index/sArticle/123/sCategory/45

Shopware 6 Produktdetailseite:

https://shop.de/whisky/schottland/islay/laphroaig-25-jahre-cask-strength

Diese Änderung bietet bessere SEO-Performance, erfordert aber präzise Weiterleitungen von den alten URLs zu den neuen Pfaden.

Typische URL-Änderungen bei Shopware-Migrationen

Aus unserer Erfahrung als Shopware-Agentur begegnen uns bei Migrationen typischerweise diese URL-Transformationen:

  • Kategoriepfade werden detaillierter: /spirituosen → /spirituosen/whisky/schottland/islay
  • Produktnamen werden vollständig ausgeschrieben: /2221/bud-spencer → /whisky/deutschland/2221/bud-spencer-the-legend-rauchig-batch-3
  • Hersteller-Seiten erhalten eigene Pfade: /don-papa → /don-papa-rum oder /hersteller/don-papa
  • CMS-Seiten werden umstrukturiert: /custom/index/sCustom/8 → /ueber-uns
  • Blog-Artikel ändern ihre URLs: /blog/detail/123 → /magazin/whisky-tasting-guide
  • Landing Pages werden neu organisiert: /campaign/sommer2022 → /sale/sommerschlussverkauf

Herausforderungen bei der URL-Migration

Die größten technischen Herausforderungen bei Shopware-Migrationen:

1. Produktvarianten und URL-Dubletten

In Shopware 5 hatten Produktvarianten oft eigene URLs mit verschiedenen sArticle-IDs. In Shopware 6 teilen sich Varianten eine Haupt-URL mit Parametern. Dies erfordert intelligentes Mapping:

# Shopware 5: Verschiedene Varianten-URLs
/detail/index/sArticle/2221  # Batch 2
/detail/index/sArticle/2223  # Batch 3

# Shopware 6: Eine URL für alle Varianten
/whisky/bud-spencer-legend?variant=batch-3

2. Mehrsprachige URL-Strukturen

Bei internationalen Shops ändert sich die URL-Struktur pro Sprache. Jede Sprachversion benötigt eigene Weiterleitungen:

# Deutsch
/weitere/obstbrand → /schnaps/obstbrand

# Englisch  
/other/fruit-brandy → /spirits/fruit-brandy

# Französisch
/autre/eau-de-vie → /spiritueux/eau-de-vie-de-fruits

3. SEO-URL-Konflikte

Manchmal existieren in Shopware 6 mehrere Produkte oder Kategorien mit ähnlichen Namen, was zu URL-Kollisionen führen kann. Shopware fügt automatisch Suffixe hinzu (-1, -2 etc.), aber die Zuordnung muss korrekt gemapped werden.

Erfolgsmetriken für Shopware-Migrationen

Basierend auf praktischer Erfahrung sind folgende Benchmarks für erfolgreiche Shopware-Migrationen realistisch:

  • URL-Mapping-Quote: 85-96% automatisches Matching (bei guter Datenbasis)
  • Manuelle Nachbearbeitung: 4-15% der URLs erfordern händisches Matching
  • 404-Rate nach Go-Live: Unter 2% bei professioneller Umsetzung
  • Traffic-Retention: 92-98% des organischen Traffics wird erhalten
  • Ranking-Erhalt: 90-95% der Top-10-Rankings bleiben bestehen

Diese Zahlen erreichen wir durch systematisches URL-Mapping, automatisierte Generierung von Weiterleitungen und gründliches Pre-Launch-Testing.

Die Shopware-Datenbank als Informationsquelle

Für präzises URL-Mapping nutzen wir die Datenbank-Strukturen beider Shopware-Versionen:

Shopware 5 – Relevante Tabellen:

  • s_core_rewrite_urls – Alle SEO-URLs und ihre Zuordnungen
  • s_articles_details – Produkt- und Varianteninformationen
  • s_categories – Kategoriestruktur und URLs
  • s_articles_supplier – Herstellerseiten

Shopware 6 – Relevante Tabellen:

  • seo_url – Zentrale Tabelle für alle SEO-URLs
  • product – Produktinformationen inkl. product_number
  • category – Neue Kategoriestruktur
  • sales_channel_domain – Domain-Zuordnung für Sales Channels

Durch SQL-Joins zwischen alten und neuen Produkt-IDs oder Artikelnummern lässt sich das Mapping automatisieren.

301 Weiterleitungen Shopware Migration – zurück zur Übersicht

3. Multi-Shop-Umgebungen und Sales Channels in Shopware

nginx verwendet eine andere Syntax als Apache und bietet mehrere Möglichkeiten, 301 Weiterleitungen zu implementieren. Die gängigste Methode ist die Verwendung der rewrite-Direktive in der Server- oder Location-Konfiguration.

Einfache nginx-Weiterleitung

Die grundlegende Syntax für eine einzelne 301-Weiterleitung in nginx sieht folgendermaßen aus:

rewrite ^/alte-url$ https://example.com/neue-url permanent;

Das Keyword permanent erzeugt dabei den 301-Statuscode. Alternativ kann auch redirect für temporäre 302-Weiterleitungen verwendet werden.

nginx-Weiterleitungen mit regulären Ausdrücken

nginx bietet mächtige Regex-Unterstützung für komplexere Weiterleitungsmuster:

rewrite ^/produkt/([0-9]+)/(.+)$ https://example.com/shop/artikel/$1/$2 permanent;

Hier werden Produktnummern und Namen aus der alten URL extrahiert und in die neue Struktur übernommen. Dies ist besonders nützlich bei Shopware-Migrationen, wo sich URL-Muster ändern, aber IDs erhalten bleiben.

Mehrere Weiterleitungen in nginx

Bei vielen Weiterleitungen empfiehlt es sich, diese in einer separaten Konfigurationsdatei zu sammeln:

# In /etc/nginx/conf.d/redirects.conf
rewrite ^/don-papa$ https://sprit-schleuder.com/don-papa-rum permanent;
rewrite ^/weitere/obstbrand$ https://sprit-schleuder.com/Weitere/Brandy/ permanent;
rewrite ^/obstbrand$ https://sprit-schleuder.com/schnaps/obstbrand permanent;

Diese Datei wird dann in die Haupt-Serverkonfiguration eingebunden:

server {
    listen 80;
    server_name sprit-schleuder.com;
    
    include /etc/nginx/conf.d/redirects.conf;
    
    # Weitere Konfiguration...
}

Return-Direktive für bessere Performance

Für einfache Weiterleitungen ohne Regex bietet nginx die performantere return-Direktive:

location = /alte-seite {
    return 301 https://example.com/neue-seite;
}

Diese Methode ist schneller als rewrite, funktioniert aber nur für exakte Pfadübereinstimmungen ohne Pattern-Matching.

301 Weiterleitungen nginx Apache – zurück zur Übersicht

3. 301 Weiterleitungen auf Apache mit .htaccess

Apache-Server verwenden traditionell die .htaccess-Datei für Weiterleitungen. Diese liegt im Document Root des jeweiligen Shops und wird von Apache automatisch verarbeitet. Für 301 Weiterleitungen stehen zwei Hauptmethoden zur Verfügung: die einfache Redirect-Direktive und das mächtigere mod_rewrite-Modul.

Einfache Redirect-Direktive

Die unkomplizierteste Methode für Apache-Weiterleitungen:

Redirect 301 "/alte-url" "https://example.com/neue-url"

Diese Syntax ist übersichtlich und funktioniert für die meisten Standard-Anwendungsfälle. Für mehrere Weiterleitungen einfach untereinander auflisten:

Redirect 301 "/don-papa" "https://sprit-schleuder.com/don-papa-rum"
Redirect 301 "/weitere/obstbrand" "https://sprit-schleuder.com/Weitere/Brandy/"
Redirect 301 "/newsletter" "https://sprit-schleuder.com/newsletter"

mod_rewrite für komplexe Weiterleitungen

Für komplexere Szenarien mit regulären Ausdrücken oder Bedingungen kommt mod_rewrite zum Einsatz:

RewriteEngine On
RewriteRule ^alte-url$ https://example.com/neue-url [R=301,L]

Die Flags haben folgende Bedeutung:

  • R=301: Redirect mit Statuscode 301 (permanent)
  • L: Last – stoppt die Verarbeitung weiterer Regeln, wenn diese zutrifft
  • NC: NoCase – Groß-/Kleinschreibung ignorieren
  • QSA: Query String Append – URL-Parameter übernehmen

Pattern-Matching mit mod_rewrite

Besonders bei Shopware-Migrationen nützlich – Weiterleitungen mit Variablen:

RewriteEngine On
RewriteRule ^produkt/([0-9]+)/(.+)$ https://example.com/shop/artikel/$1/$2 [R=301,L]

Hier werden Produktnummer und Name aus der alten URL extrahiert und in die neue Struktur eingefügt.

Vollständiges .htaccess-Beispiel

# Redirects for sprit-schleuder.com
# Generated from weiterleitungen_boutique.xlsx
# 301 Permanent Redirects

Redirect 301 "/don-papa" "https://sprit-schleuder.com/don-papa-rum"
Redirect 301 "/weitere/obstbrand" "https://sprit-schleuder.com/Weitere/Brandy/"
Redirect 301 "/obstbrand" "https://sprit-schleuder.com/schnaps/obstbrand"
Redirect 301 "/wiki/gin-wissen/was-sind-botanicals" "https://sprit-schleuder.com/wiki/was-sind-botanicals"

301 Weiterleitungen nginx Apache – zurück zur Übersicht

4. Multi-Shop-Umgebungen und Sales Channels

In der Praxis betreiben viele Unternehmen mehrere Shops auf einem Server – entweder als separate Domains oder als Sales Channels innerhalb einer Shopware-Installation. Hier wird die Konfiguration von 301 Weiterleitungen deutlich anspruchsvoller, denn ohne korrekte Domain-Bedingungen greifen Weiterleitungen für alle Shops gleichzeitig.

Das Problem: Shop-übergreifende Weiterleitungen

Stell dir vor, du hostest bei einem Anbieter wie Timme Hosting folgende Struktur:

  • darmboutique.de – Hauptshop für Darmboutique-Produkte
  • sprit-schleuder.com – Subshop für Spirituosen (Sales Channel in Shopware)

Beide Shops laufen auf demselben Webserver. Wenn du nun eine Weiterleitung wie diese einrichtest:

rewrite ^/don-papa$ https://sprit-schleuder.com/don-papa-rum permanent;

Dann gilt diese Regel für ALLE Domains auf dem Server. Das bedeutet: Ein Besucher, der darmboutique.de/don-papa aufruft, wird fälschlicherweise zu sprit-schleuder.com weitergeleitet – obwohl diese Weiterleitung nur für sprit-schleuder.com gedacht war.

Shopware Sales Channels und URL-Routing

Shopware 6 verwaltet Sales Channels über eine zentrale Installation. Jeder Sales Channel kann eine eigene Domain haben, teilt sich aber die Code-Basis und oft auch die nginx/Apache-Konfiguration. Dies erfordert besondere Aufmerksamkeit bei der Implementierung von 301 Weiterleitungen:

  • Jeder Sales Channel hat eigene URL-Strukturen
  • Kategorie- und Produktpfade können sich zwischen Sales Channels unterscheiden
  • Weiterleitungen müssen präzise auf den jeweiligen Sales Channel abzielen
  • Domain-Bedingungen sind zwingend erforderlich

301 Weiterleitungen nginx Apache – zurück zur Übersicht

5. Domain-spezifische Weiterleitungen

Um das Problem shop-übergreifender Weiterleitungen zu lösen, müssen wir Domain-Bedingungen in unsere Konfiguration einbauen. Die Implementierung unterscheidet sich zwischen nginx und Apache erheblich.

Domain-Bedingungen in nginx

nginx bietet die $host-Variable, mit der wir Domain-spezifische if-Bedingungen erstellen können:

# Redirects nur für sprit-schleuder.com
if ($host = 'sprit-schleuder.com') {
    rewrite ^/don-papa$ https://sprit-schleuder.com/don-papa-rum permanent;
    rewrite ^/weitere/obstbrand$ https://sprit-schleuder.com/Weitere/Brandy/ permanent;
    rewrite ^/obstbrand$ https://sprit-schleuder.com/schnaps/obstbrand permanent;
}

So werden die Weiterleitungen nur ausgeführt, wenn die Anfrage tatsächlich an sprit-schleuder.com gerichtet ist. Anfragen an darmboutique.de bleiben unberührt.

Mehrere Domains in nginx

Wenn du mehrere Domains mit unterschiedlichen Weiterleitungen verwaltest:

# Weiterleitungen für sprit-schleuder.com
if ($host = 'sprit-schleuder.com') {
    rewrite ^/don-papa$ https://sprit-schleuder.com/don-papa-rum permanent;
    rewrite ^/stroh$ https://sprit-schleuder.com/stroh-rum permanent;
}

# Weiterleitungen für darmboutique.de
if ($host = 'darmboutique.de') {
    rewrite ^/naturdarm$ https://darmboutique.de/naturdaerme/schwein permanent;
    rewrite ^/kunstdarm$ https://darmboutique.de/kunstdaerme/cellulose permanent;
}

Domain-Bedingungen in Apache

Apache verwendet mod_rewrite mit RewriteCond für Domain-Prüfungen:

RewriteEngine On

# Weiterleitungen nur für sprit-schleuder.com
RewriteCond %{HTTP_HOST} ^sprit-schleuder\.com$ [NC]
RewriteRule ^don-papa$ https://sprit-schleuder.com/don-papa-rum [R=301,L]

RewriteCond %{HTTP_HOST} ^sprit-schleuder\.com$ [NC]
RewriteRule ^weitere/obstbrand$ https://sprit-schleuder.com/Weitere/Brandy/ [R=301,L]

Die RewriteCond muss vor jeder RewriteRule wiederholt werden, die unter dieser Bedingung ausgeführt werden soll. Das [NC]-Flag bedeutet „No Case“ und ignoriert Groß-/Kleinschreibung.

Optimierte Apache-Variante mit Gruppierung

Um die Wiederholung von RewriteCond zu vermeiden, können wir mehrere Regeln in einem Block zusammenfassen:

RewriteEngine On

# Block für sprit-schleuder.com
RewriteCond %{HTTP_HOST} ^sprit-schleuder\.com$ [NC]
RewriteCond %{REQUEST_URI} ^/don-papa$ [OR]
RewriteCond %{REQUEST_URI} ^/weitere/obstbrand$ [OR]
RewriteCond %{REQUEST_URI} ^/obstbrand$
RewriteRule ^don-papa$ https://sprit-schleuder.com/don-papa-rum [R=301,L]
RewriteRule ^weitere/obstbrand$ https://sprit-schleuder.com/Weitere/Brandy/ [R=301,L]
RewriteRule ^obstbrand$ https://sprit-schleuder.com/schnaps/obstbrand [R=301,L]

Dies ist jedoch bei vielen Weiterleitungen schnell unübersichtlich. Die erste Variante mit wiederholten RewriteCond ist praktikabler.

301 Weiterleitungen nginx Apache – zurück zur Übersicht

6. Massenhafte Weiterleitungen aus Excel/CSV generieren

Nach Shopware-Migrationen oder Shop-Relaunches entstehen häufig hunderte von Weiterleitungen. Diese manuell zu erstellen wäre ineffizient und fehleranfällig. Die Lösung: Automatisierte Generierung aus strukturierten Datenquellen wie Excel oder CSV.

Struktur der Quell-Datei

Eine typische Excel-Datei für Weiterleitungen enthält mindestens diese Spalten:

  • Alte URL: Die ursprüngliche URL (z.B. https://sprit-schleuder.com/don-papa)
  • Neue URL: Die Ziel-URL (z.B. https://sprit-schleuder.com/don-papa-rum)
  • Ähnlichkeit: Optional – gibt an, wie gut die URLs zusammenpassen
  • Status: Optional – z.B. „Gemapped“, „Überprüfen“, „Ignorieren“

Python-Script zur nginx-Generierung

Mit Python und der openpyxl-Bibliothek lassen sich Weiterleitungen automatisch generieren:

import openpyxl
from urllib.parse import urlparse

# Excel-Datei laden
wb = openpyxl.load_workbook('weiterleitungen.xlsx')
ws = wb.active

# nginx-Konfiguration erstellen
nginx_lines = []
nginx_lines.append("# Redirects für sprit-schleuder.com")
nginx_lines.append("if ($host = 'sprit-schleuder.com') {")
nginx_lines.append("")

# Alle Weiterleitungen durchgehen
for row in ws.iter_rows(min_row=2, values_only=True):
    old_url = row[0]
    new_url = row[1]
    
    if old_url and new_url:
        old_path = urlparse(old_url).path
        nginx_lines.append(f'    rewrite ^{old_path}$ {new_url} permanent;')

nginx_lines.append("}")

# In Datei schreiben
with open('nginx_redirects.conf', 'w', encoding='utf-8') as f:
    f.write('\n'.join(nginx_lines))

Python-Script zur Apache/.htaccess-Generierung

Für Apache-Server mit .htaccess:

import openpyxl
from urllib.parse import urlparse

wb = openpyxl.load_workbook('weiterleitungen.xlsx')
ws = wb.active

htaccess_lines = []
htaccess_lines.append("# 301 Permanent Redirects")
htaccess_lines.append("RewriteEngine On")
htaccess_lines.append("")

for row in ws.iter_rows(min_row=2, values_only=True):
    old_url = row[0]
    new_url = row[1]
    
    if old_url and new_url:
        old_path = urlparse(old_url).path
        # Domain-Bedingung hinzufügen
        htaccess_lines.append(f'RewriteCond %{{HTTP_HOST}} ^sprit-schleuder\\.com$ [NC]')
        htaccess_lines.append(f'RewriteRule ^{old_path.lstrip("/")}$ {new_url} [R=301,L]')
        htaccess_lines.append("")

with open('.htaccess', 'w', encoding='utf-8') as f:
    f.write('\n'.join(htaccess_lines))

Vorteile der automatisierten Generierung

  • Zeitersparnis: 300+ Weiterleitungen in Sekunden statt Stunden erstellt
  • Fehlerreduktion: Keine Tippfehler oder Copy-Paste-Fehler
  • Versionskontrolle: Excel-Datei kann in Git versioniert werden
  • Dokumentation: Zusätzliche Spalten für Notizen und Status
  • Flexibilität: Einfache Anpassungen durch Änderung des Scripts

301 Weiterleitungen nginx Apache – zurück zur Übersicht

7. Weiterleitungen nach Shopware-Migrationen

Die Migration von Shopware 5 zu Shopware 6 ist einer der häufigsten Anwendungsfälle für massenhafte 301 Weiterleitungen. Dabei ändern sich URL-Strukturen oft grundlegend, und ohne korrekte Weiterleitungen gehen SEO-Rankings und organischer Traffic verloren.

Typische URL-Änderungen bei Shopware-Migrationen

Bei der Migration von Shopware 5 zu Shopware 6 treten häufig folgende URL-Änderungen auf:

  • Kategoriepfade: /weitere/obstbrand → /schnaps/obstbrand
  • Produktdetailseiten: /whisky/2221/bud-spencer-legend → /whisky/deutschland/2221/bud-spencer-legend-batch-3
  • Hersteller-Seiten: /don-papa → /don-papa-rum
  • CMS/Wiki-Seiten: /wiki/gin-wissen/was-sind-botanicals → /wiki/was-sind-botanicals
  • Filterseiten: Oft werden Filterpfade komplett neu strukturiert

URL-Mapping-Prozess

Der professionelle Ansatz für Shopware-Migrationen umfasst mehrere Schritte:

1. Alte URLs erfassen

Exportiere alle URLs aus Shopware 5 über die Datenbank oder einen Sitemap-Export. Relevante Tabellen in Shopware 5:

  • s_core_rewrite_urls – SEO-URLs
  • s_articles_details – Produktvarianten
  • s_categories – Kategorien

2. Neue URLs aus Shopware 6 extrahieren

Nach der Migration die neuen URL-Strukturen aus Shopware 6 exportieren:

  • seo_url-Tabelle in Shopware 6
  • product-Tabelle für Produktdetails
  • category-Tabelle für Kategorien

3. Automatisches Matching

Mit Python oder PHP können URLs automatisch gematcht werden basierend auf:

  • Produkt-IDs (wenn übernommen)
  • Kategorie-IDs
  • String-Ähnlichkeit (Levenshtein-Distanz)
  • Artikelnummern

Erfolgsquoten und Qualitätskontrolle

Bei professionellen Migrationen werden typischerweise Erfolgsquoten von 80-96% erreicht:

  • 80-85%: Automatisches Matching mit hoher Konfidenz
  • 10-15%: Manuelles Matching bei unsicheren Fällen
  • 5%: URLs ohne Match (ausgelaufene Produkte, nicht mehr relevante Seiten)

Qualitätskontrolle ist essentiell: Stichprobenartige Tests der generierten Weiterleitungen sollten vor dem Go-Live durchgeführt werden.

Priorisierung von Weiterleitungen

Nicht alle URLs sind gleich wichtig. Priorisiere nach:

  • Traffic-Volumen: URLs mit hohem organischen Traffic zuerst
  • Backlinks: Seiten mit vielen eingehenden Links
  • Conversion-Rate: URLs mit hoher Conversion-Performance
  • SEO-Rankings: Seiten auf den ersten Positionen bei Google

301 Weiterleitungen Shopware Migration – zurück zur Übersicht

8. URL-Mapping-Strategien für Shopware-Migrationen

Das Herzstück jeder erfolgreichen Shopware-Migration ist das präzise Mapping von alten zu neuen URLs. Dieser Prozess entscheidet darüber, ob deine SEO-Rankings erhalten bleiben oder verloren gehen.

Der URL-Mapping-Prozess in vier Phasen

Phase 1: Alte URLs exportieren

Bevor die Migration startet, müssen alle relevanten URLs aus Shopware 5 erfasst werden:

-- SQL-Query für Shopware 5 SEO-URLs
SELECT 
    r.org_path as alte_url,
    r.id,
    r.main,
    r.subshopID
FROM s_core_rewrite_urls r
WHERE r.main = 1
ORDER BY r.org_path;

Exportiere auch Produktnummern und Artikel-IDs, die als Mapping-Schlüssel dienen:

-- Produkt-URLs mit Artikelnummern
SELECT 
    a.id,
    a.ordernumber,
    r.org_path as alte_url
FROM s_articles a
JOIN s_articles_details d ON a.id = d.articleID
JOIN s_core_rewrite_urls r ON r.org_path LIKE CONCAT('%/sArticle/', d.id, '%')
WHERE d.kind = 1;

Phase 2: Neue URLs aus Shopware 6 extrahieren

Nach der Migration die neuen URL-Strukturen aus Shopware 6 exportieren:

-- SQL-Query für Shopware 6 SEO-URLs
SELECT 
    LOWER(HEX(seo.id)) as id,
    seo.seo_path_info as neue_url,
    seo.foreign_key,
    seo.route_name,
    LOWER(HEX(seo.sales_channel_id)) as sales_channel_id
FROM seo_url seo
WHERE seo.is_canonical = 1
ORDER BY seo.seo_path_info;

Phase 3: Automatisches Matching

Mit Python, PHP oder einem anderen Tool URLs automatisch matchen. Matching-Strategien:

  • Artikelnummern: Zuverlässigste Methode, wenn Artikelnummern identisch bleiben
  • Produkt-IDs: Wenn IDs bei der Migration übernommen wurden
  • String-Ähnlichkeit: Levenshtein-Distanz für ähnliche URL-Pfade
  • Kategorie-Mapping: Kategorien zuerst mappen, dann Produkte zuordnen

Beispiel für String-Ähnlichkeits-Matching in Python:

from difflib import SequenceMatcher

def similarity_score(a, b):
    return SequenceMatcher(None, a, b).ratio()

# URLs matchen
for alte_url in alte_urls:
    best_match = None
    best_score = 0
    
    for neue_url in neue_urls:
        score = similarity_score(alte_url, neue_url)
        if score > best_score and score > 0.7:  # Mindestens 70% Ähnlichkeit
            best_score = score
            best_match = neue_url
    
    if best_match:
        redirects.append((alte_url, best_match, best_score))

Phase 4: Manuelle Nachbearbeitung

URLs mit niedriger Match-Qualität (unter 85% Ähnlichkeit) sollten manuell überprüft werden:

  • Kategorien mit komplett neuer Struktur
  • Produkte mit geändertem Namen oder Kategorie-Zuordnung
  • CMS-Seiten mit neuen URLs
  • Hersteller-Seiten mit geänderter URL-Konvention

Excel als Arbeits-Tool für URL-Mapping

Eine strukturierte Excel-Datei ist ideal für den Mapping-Prozess:

Spaltenstruktur:

  • Spalte A: Alte URL (aus Shopware 5)
  • Spalte B: Neue URL (aus Shopware 6)
  • Spalte C: Ähnlichkeit (in %)
  • Spalte D: Status (Gemapped, Überprüfen, Manuell, Ignorieren)
  • Spalte E: Notizen
  • Spalte F: Traffic (aus Google Analytics)
  • Spalte G: Backlinks (Anzahl)

Mit dieser Struktur können mehrere Personen parallel am Mapping arbeiten und URLs priorisiert abarbeiten.

Umgang mit Sonderfällen

Produktvarianten konsolidieren

Wenn in Shopware 5 Varianten eigene URLs hatten, diese auf die Haupt-URL in Shopware 6 leiten:

Redirect 301 "/detail/index/sArticle/2221" "https://shop.de/produkt/bud-spencer-legend"
Redirect 301 "/detail/index/sArticle/2223" "https://shop.de/produkt/bud-spencer-legend"
Redirect 301 "/detail/index/sArticle/2225" "https://shop.de/produkt/bud-spencer-legend"

Gelöschte Produkte

Für Produkte, die in Shopware 6 nicht mehr existieren:

  • Weiterleitung zur relevantesten Kategorieseite
  • Weiterleitung zu ähnlichen Produkten
  • Weiterleitung zur Such-Seite mit vorausgefülltem Suchbegriff
  • Nur als letzte Option: Auf 404-Seite laufen lassen

Mehrsprachige Shops

Jede Sprache benötigt eigene URL-Mappings. Arbeite Sales-Channel-basiert:

# DE Sales Channel
/produkte/whisky → /whisky/schottland

# EN Sales Channel  
/products/whisky → /whisky/scotland

# FR Sales Channel
/produits/whisky → /whisky/ecosse

Qualitätssicherung des URL-Mappings

Vor der Generierung der finalen Weiterleitungskonfiguration:

  • Duplikate entfernen: Keine alte URL darf mehrmals vorkommen
  • Redirect-Chains vermeiden: A→B→C sollte direkt A→C werden
  • Ziel-URLs validieren: Alle neuen URLs müssen existieren (200 OK)
  • Traffic-Analyse: Hochfrequentierte URLs prioritär testen
  • Stichproben: 10-20% der Mappings manuell überprüfen

301 Weiterleitungen Shopware Migration – zurück zur Übersicht

9. Testing und Debugging von Weiterleitungen

Die korrekte Implementierung von 301 Weiterleitungen zu überprüfen ist genauso wichtig wie die Erstellung selbst. Fehlerhafte Weiterleitungen können zu Redirect-Chains, Loops oder 404-Fehlern führen.

Browser-basiertes Testing

Die einfachste Methode ist der Test im Browser mit geöffneten Developer Tools (F12):

  • Öffne den Network-Tab
  • Rufe die alte URL auf
  • Überprüfe den HTTP-Statuscode (sollte 301 sein)
  • Überprüfe den Location-Header (sollte die neue URL enthalten)
  • Bestätige, dass die finale URL korrekt ist

Command-Line Testing mit curl

Für automatisiertes Testing eignet sich curl hervorragend:

# Einzelne URL testen
curl -I https://sprit-schleuder.com/don-papa

# Weiterleitung nicht folgen (-I für HEAD-Request)
curl -I --max-redirs 0 https://sprit-schleuder.com/don-papa

# Mehrere URLs aus Datei testen
while read url; do
    echo "Testing: $url"
    curl -I -s "$url" | grep -E "HTTP|Location"
done < urls.txt

Redirect-Chains erkennen

Redirect-Chains entstehen, wenn eine URL über mehrere Zwischenstationen weitergeleitet wird:

URL A → URL B → URL C → URL D

Dies ist schlecht für Performance und SEO. Mit curl kannst du Chains identifizieren:

curl -Ls -o /dev/null -w "%{url_effective}\n" https://example.com/alte-url

Redirect Loops verhindern

Ein Redirect Loop entsteht, wenn URL A auf URL B verweist und URL B zurück auf URL A. Dies führt zu Fehlern im Browser. Typische Ursachen:

  • Fehlerhafte Regex-Patterns
  • Überschneidende Weiterleitungsregeln
  • Domain-Bedingungen fehlen oder sind falsch konfiguriert

Online-Tools für Redirect-Testing

Mehrere Online-Tools unterstützen beim Testing:

  • Redirect Checker: Visualisiert Redirect-Chains
  • Screaming Frog SEO Spider: Crawlt die gesamte Seite und identifiziert Weiterleitungsprobleme
  • Google Search Console: Zeigt 404-Fehler und Weiterleitungsprobleme

Logging und Monitoring

Aktiviere Logging in nginx oder Apache, um Weiterleitungen nachzuverfolgen:

nginx:

# In nginx.conf
log_format redirect '$remote_addr - $remote_user [$time_local] '
                    '"$request" $status $body_bytes_sent '
                    '"$http_referer" "$http_user_agent" '
                    'redirect_from="$request_uri" redirect_to="$upstream_http_location"';

access_log /var/log/nginx/redirects.log redirect;

Apache:

# In .htaccess
RewriteLog "/var/log/apache2/rewrite.log"
RewriteLogLevel 3

301 Weiterleitungen Shopware Migration – zurück zur Übersicht

10. Performance-Optimierung bei vielen Weiterleitungen

Bei mehreren hundert oder tausend 301 Weiterleitungen kann die Performance des Webservers leiden. Hier sind bewährte Optimierungsstrategien für nginx und Apache.

nginx-Performance-Optimierung

nginx ist grundsätzlich performanter als Apache bei vielen Weiterleitungen, aber auch hier gibt es Optimierungspotenzial:

Map-Direktive statt if-Bedingungen

Statt vieler if-Blöcke sollte die map-Direktive verwendet werden:

map $request_uri $new_uri {
    default "";
    /don-papa /don-papa-rum;
    /weitere/obstbrand /Weitere/Brandy/;
    /obstbrand /schnaps/obstbrand;
    /newsletter /newsletter;
}

server {
    if ($new_uri != "") {
        return 301 https://sprit-schleuder.com$new_uri;
    }
}

Die map-Direktive ist deutlich schneller als einzelne if-Abfragen und sollte im http-Block außerhalb des server-Blocks definiert werden.

Return statt Rewrite

Wo möglich, return statt rewrite verwenden:

# Langsamer
rewrite ^/alte-url$ https://example.com/neue-url permanent;

# Schneller
location = /alte-url {
    return 301 https://example.com/neue-url;
}

Externe Redirect-Maps

Bei sehr vielen Weiterleitungen können externe Map-Dateien helfen:

map $request_uri $new_uri {
    include /etc/nginx/redirects-map.conf;
}

# In /etc/nginx/redirects-map.conf:
/don-papa /don-papa-rum;
/weitere/obstbrand /Weitere/Brandy/;
# ... tausende weitere

Apache-Performance-Optimierung

RewriteMap für massenhafte Weiterleitungen

Apache bietet RewriteMap als performante Alternative zu vielen einzelnen Regeln:

# In der Apache-Hauptkonfiguration (nicht .htaccess!)
RewriteMap redirects txt:/etc/apache2/redirects.txt

# In der .htaccess oder vhost-Config
RewriteCond %{REQUEST_URI} ^(.*)$
RewriteCond ${redirects:%1} ^(.+)$
RewriteRule ^.*$ %1 [R=301,L]

# /etc/apache2/redirects.txt:
/don-papa https://sprit-schleuder.com/don-papa-rum
/weitere/obstbrand https://sprit-schleuder.com/Weitere/Brandy/
/obstbrand https://sprit-schleuder.com/schnaps/obstbrand

Caching von Weiterleitungen

Browser und CDNs cachen 301-Weiterleitungen. Stelle sicher, dass Cache-Header korrekt gesetzt sind:

Header set Cache-Control "public, max-age=31536000"

Monitoring und Metriken

Überwache die Performance deiner Weiterleitungen:

  • Response-Zeit: 301-Responses sollten unter 50ms liegen
  • Server-Load: CPU-Auslastung bei vielen Redirects beobachten
  • Fehlerrate: 404-Fehler nach Implementierung tracken
  • Google Search Console: Crawling-Fehler und Redirect-Probleme

301 Weiterleitungen Shopware Migration – zurück zur Übersicht

11. Häufige Fehler bei Shopware-Migrationen und deren Lösungen

Bei der Implementierung von 301 Weiterleitungen treten immer wieder die gleichen Fehler auf. Hier sind die häufigsten Probleme und ihre Lösungen.

Problem: Weiterleitungen greifen für alle Domains

Symptom: Eine Weiterleitung für sprit-schleuder.com leitet auch Besucher von darmboutique.de falsch um.

Ursache: Fehlende Domain-Bedingungen in der Konfiguration.

Lösung nginx:

if ($host = 'sprit-schleuder.com') {
    rewrite ^/don-papa$ https://sprit-schleuder.com/don-papa-rum permanent;
}

Lösung Apache:

RewriteCond %{HTTP_HOST} ^sprit-schleuder\.com$ [NC]
RewriteRule ^don-papa$ https://sprit-schleuder.com/don-papa-rum [R=301,L]

Problem: Redirect Loops

Symptom: Browser zeigt „Too many redirects“ oder „Redirect loop detected“.

Ursache: URL A leitet auf URL B, und URL B leitet zurück auf URL A.

Lösung: Überprüfe alle Weiterleitungsregeln auf Überschneidungen. Mit curl kannst du den Loop nachvollziehen:

curl -I -L https://example.com/problematische-url

Problem: Regex matcht zu viel

Symptom: Weiterleitungen greifen für URLs, für die sie nicht gedacht waren.

Ursache: Zu allgemeine reguläre Ausdrücke.

Beispiel:

# Falsch - matcht auch /produkte/123, /produkt-details etc.
rewrite ^/produkt(.*)$ /shop/artikel$1 permanent;

# Richtig - matcht nur /produkt/123
rewrite ^/produkt/([0-9]+)$ /shop/artikel/$1 permanent;

Problem: Query-Parameter gehen verloren

Symptom: URL-Parameter wie ?color=red werden bei der Weiterleitung nicht übernommen.

Lösung nginx: nginx übernimmt Query-Parameter automatisch.

Lösung Apache: Verwende das QSA-Flag:

RewriteRule ^alte-url$ https://example.com/neue-url [R=301,L,QSA]

Problem: 302 statt 301

Symptom: Google indexed die alte URL weiter, PageRank wird nicht übertragen.

Ursache: Falsche Statuscode-Angabe oder Verwendung von „redirect“ statt „permanent“.

Lösung nginx:

# Falsch
rewrite ^/alte-url$ /neue-url redirect;

# Richtig
rewrite ^/alte-url$ /neue-url permanent;

Lösung Apache:

# Falsch
Redirect 302 "/alte-url" "/neue-url"

# Richtig
Redirect 301 "/alte-url" "/neue-url"

Problem: Weiterleitungen funktionieren nicht nach Shopware-Update

Symptom: Nach einem Shopware-Update funktionieren die Weiterleitungen nicht mehr.

Ursache: Shopware-Updates können .htaccess-Dateien überschreiben oder nginx-Konfigurationen ändern.

Lösung:

  • Sichere deine Weiterleitungs-Konfiguration vor Updates
  • Verwende separate Include-Dateien für Custom-Redirects
  • Dokumentiere alle Änderungen in Git/Version Control
  • Teste Weiterleitungen nach jedem Update

Problem: Performance-Einbruch nach Redirect-Implementierung

Symptom: Website ist nach Einrichtung von hunderten Weiterleitungen deutlich langsamer.

Ursache: Ineffiziente Implementierung mit vielen if-Bedingungen oder einzelnen RewriteRules.

Lösung:

  • nginx: Verwende map-Direktiven statt if-Blöcken
  • Apache: Verwende RewriteMap statt einzelner RewriteRules
  • Prüfe, ob alle Weiterleitungen wirklich noch benötigt werden
  • Entferne nach 6-12 Monaten Weiterleitungen mit null Traffic

301 Weiterleitungen Shopware Migration – zurück zur Übersicht

Professionelle Unterstützung bei deiner Shopware-Migration

Eine Shopware-Migration mit tausenden URLs ist komplex und zeitkritisch. Fehlerhafte Weiterleitungen können deinen organischen Traffic und deine Rankings nachhaltig schädigen. Wenn du Unterstützung bei deinem Migrationsprojekt brauchst – von der URL-Analyse über das Mapping bis zur finalen Implementierung und Testing – sprich uns an.

Als Shopware-Agentur bieten wir:

  • Analyse deiner aktuellen URL-Struktur und Traffic-Daten
  • Automatisiertes URL-Mapping mit manueller Qualitätskontrolle
  • Generierung von nginx/Apache-Weiterleitungskonfigurationen
  • Domain-spezifische Konfiguration für Multi-Sales-Channel-Setups
  • Pre-Launch Testing und Post-Launch Monitoring
  • Performance-Optimierung bei großen Weiterleitungsmengen

Kontaktiere uns für ein unverbindliches Gespräch über dein Shopware-Projekt.

301 Weiterleitungen Shopware Migration – zurück zur Übersicht

Quellen und weiterführende Links