Magento – Multistore: Verschiedene Shops über verschiedene URLs ansprechen

Magento zeichnet sich unter anderem durch die einfache Anlage mehrerer Shops in einer Installation aus. So kann man mehr oder weniger beliebig viele Shops (Websiten und/oder Stores) anlegen und wiederum viele Storeviews anlegen. Wir man einen Storeview über eine URL ansteuert habe ich vor einigen Beiträgen erläutert (siehe hier).

Da dies aber eigentlich schon der zweite Schritt ist und ich heute mal wieder eine URL auf einen bestimmten Shop (Website) schicken wollte, schreibe ich noch kurz ein To-Do, um allgemein mehrere Shops über die Domain anzusteuern.

Voraussetzung ist, dass im Backend die verschiedenen Websites, Stores und Storeviews eingerichtet und aktiviert sind. Normalerweise steuert man direkt auf eine Website, bzw. wir wollen dies so tun. Soll auf einen Store oder Storeview verwiesen werden, bitte den Artikel von oben zu Rate ziehen.

Um nun die verschiedenen Shops einer Installation erreichen zu können, soll hier gezeigt werden, wie die index.php im Rootverzeichnis von Magento verändert werden muss, um von www.domain1.de auf den „Domain1“ Shop zu kommen, dessen Websitename (bzw. dessen Code) „domain1“ lautet.

Dasselbe soll auch für www.domain2.de für den Shop „Domain2“ klappen.

Wir öffnen also die index.php und fügen ca. in Zeile 72 nach umask(0); und vor der } folgende Zeilen ein:

// Domain 1 (Anm.: Dies ist nur eine Info für den Betrachter und hat für den Code keine Bedeutung)

case ‚domain1.de‘:
case ‚www.domain1.de‘:
$_SERVER[„MAGE_RUN_CODE“] = „domain1“;
$_SERVER[„MAGE_RUN_TYPE“] = „website“;
break;

// Domain 2

case ‚domain2.de‘:
case ‚www.domain2.de‘:
$_SERVER[„MAGE_RUN_CODE“] = „domain2“;
$_SERVER[„MAGE_RUN_TYPE“] = „website“;
break;

// Standard (default store) (Anm.: Dies ist ruft in allen anderen Fällen den Standardshop auf)
default:
break;

Nun könnte es schon klappen. Möglicherweise Cache löschen. Wichtig ist auf die exakte Schreibweise des Codes der Website zu achten. Der Name der Website ist komplett irrelevant. Sogar Groß- und Kleinschreibung reicht für Fehler aus.

Möglicherweise muss jedoch noch die .htaccess geändert werden, wenn es nicht klappt. Einfach ausprobieren und nach der letzten Zeile #FileETag none für jede Seite eine Rewrite Regel einbauen:

RewriteCond %{HTTP_HOST} !^\.domain1\.de$
RewriteCond %{HTTP_HOST} !^www\.domain1\.de$

RewriteCond %{HTTP_HOST} !^\.domain2\.de$
RewriteCond %{HTTP_HOST} !^www\.domain2\.de$

Jetzt sollte es spätestens klappen.

Eine andere Variante, die ab Version 1.4 klappen soll (habe es selber nicht ausprobiert), ist folgende:

In der .htaccess diese Zeilen einfügen:
SetEnvIf Host DOMAIN1\.com MAGE_RUN_TYPE=Storeview1
SetEnvIf Host DOMAIN2\.com MAGE_RUN_CODE=Storeview2

Genutzt in Magento Versionen 1.4.1.0 & 1.4.1.1

Nachtrag von 12.08.2011:

Eigentlich wollte ich das schon länger schreiben, aber habe es nun doch erst jetzt getan. Bei Magento 1.5. wird wieder in der index.php geschrieben, nur nicht mehr da oben, sondern dies (hinter unmask(0); und vor /* Store or website code */ $mageRunCoe…):

if ($_SERVER[‚HTTP_HOST‘] == „domain.de“ || $_SERVER[‚HTTP_HOST‘] == „www[oder Subdomain].domain.de“){
$_SERVER[„MAGE_RUN_CODE“] = „[Ihr Websitecode]“;
$_SERVER[„MAGE_RUN_TYPE“] = „website“;
}

Dies kann beliebig oft wiederholt werden.

Für weitere Alternativen, bitte auch diesen und diesen Artikel beachten.

Angewendet in Magento Version 1.5.1.0. Fragen? Kommentare? Anregungen? Gerne!

 

Published by Covos

Seit 2009 arbeite ich nun intensiv mit Magento. Begonnen habe ich mit der Erstellung und dem Betrieb von B2C-Shops. Ausgeweitet wurde dies durch meine Tätigkeit im Logistik-Sektor. Hieraus entstanden erste spezialisierte B2E-Systeme. Heute arbeite ich tag-täglich mit spannenden B2C-, B2B- und B2E-Projekten und berichte in diesem Blog über Herausforderungen und gebe Insider-Tipps.

12 comments on “Magento – Multistore: Verschiedene Shops über verschiedene URLs ansprechen”

  1. ich verzweifle noch….bin seit 3 Tagen am rum probieren, es will nicht funktionieren 🙁 Habe ne frische 1.5.1 er Installation.
    Wäre es möglich ein Auszug des Codes (index.php & .htaccess) zu bekommen?

  2. Vielleicht sollte man noch anmerken, dass das Blogsystem die Anführungszeichen ersetzt. War gerade etwas verzweifelt, weil es einfach nicht klappen wollte..

    Die doppelten Anführungszeichen („) müssen also durch ein einfaches (‚) ersetzt werden. Dann ging’s bei mir (Magento 1.5.1)

    Danke für die Anleitung, hatte wirklich einige Foren und tausende Ansätze durch. Dieser funktioniert super! 🙂

  3. Hat das schon jemand mit der neuen Version 1.7.0.1 versucht? oder gibts es dort schon eine andere Lösung? Ich bin noch ein ziemlicher Newbie in Sachen Magento. Herlichen Dank für eien Antwort…

  4. auch ich bin am verzweifeln…
    versuche seit einer woche per index.php und .htaccess auf einen weiteren store zu kommen. Habe dafür eine subdomain angelegt und komme einfach nicht weiter.
    kann mir jemand weiterhelfen?

  5. Hallo, muss es denn zwingend eine neue URL.
    Ist es mögliche die selbe URL zu benutzen nur das man dahinter ein /grosshandel anhängt und automatisch eine neuer Store zu sehen ist?(multistore)

    Gruß
    Daniel

    1. Mir fiele aktuell nur die Möglichkeit ein, ein Verzeichnis auf dem Server zu erstellen, welches „grosshandel“ heißt. In dieser liegt eine .htaccess, die den Besucher dann auf eine Subdomain o.ä. umleitet mit welcher der Shop verknüpft ist. Vielleicht hift dies als Lösungsweg?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.