Frage

Ein Kunde möchte, dass sein multistore Shop so eingerichtet wird:

Dies ist ein Beispiel, aber es kann viel mehr verschiedene Unterordner geben. Was ist der beste Ansatz, um verschiedene Unterordner für verschiedene Store -Ansichten / Websites zu bewältigen?

Ich weiß, dass eine Lösung darin besteht, Unterordner genannt zu erstellen de, en usw. und kopieren Sie den index.php und .htaccess in die entsprechenden Unterordner.

Es kann auch einige Workarounds (Symlinks für Index.php, VHOST -Konfiguration anstelle von .htaccess) geben, um die Duplikation von Dateien zu minimieren, aber ich würde gerne eine Lösung finden Behandeln Sie alles nach Konfiguration.


AKTUALISIEREN

Wir haben mit Enterprise -Unterstützung darüber verifiziert, dass der beste Weg, dies zu tun, durch die Erstellung von Unterordnern besteht.

Wir haben es so gemacht:

  • Erstellen Sie ein Verzeichnis "Sprachförderer"
  • Erstellt eine Kopie von Index.php im Verzeichnis zusammen mit einem angepassten .htaccess und symlinks zu den Magento -Ordnern (App/, Fehler/, ...)
  • Erstellte Symlinks "de", "en" usw. im Magento -Root -Verzeichnis, das auf das Verzeichnis "Sprachdatler" zeigt

Auf diese Weise können wir eine neue Sprache hinzufügen, indem wir einen neuen Symlink (z. B. "FR") erstellen.

War es hilfreich?

Lösung

Es ist sehr einfach, mehrere Domänen/Pfade basierend auf URLs zu servieren. Wie erwähnt, Das einfachste Setup (nur Konfiguration) ist möglich, wenn die eindeutige core/store Codes können im Pfad als Unterordner verwendet werden. Dies erfordert eine der folgenden:

  1. Besucher sind zunächst mit dem richtigen Unterordnerpfad verbunden
  2. Die Besucher werden auf einer Landing -Seite serviert, aus der sie ihren Laden auswählen und einen Keks erhalten
  3. Einige Mechanismus wird verwendet, um den Auslauftyp und den Auslaufcode vor dem PHP -Umgang mit der Antwort festzulegen

In Bezug auf Nr. 3: Seit 1.4 Magento ermöglichte es dem Webserver, den laufenden Kontext zu bestimmen (Webseite oder Laden) sowie der bestimmte Code, der verwendet werden sollte. Aus index.php:

/* Store or website code */
$mageRunCode = isset($_SERVER['MAGE_RUN_CODE']) ? $_SERVER['MAGE_RUN_CODE'] : '';

/* Run store or run website */
$mageRunType = isset($_SERVER['MAGE_RUN_TYPE']) ? $_SERVER['MAGE_RUN_TYPE'] : 'store';

Mage::run($mageRunCode, $mageRunType);

Während Umgebungsvariablen verwendet werden, um die Anwendung zu initialisieren, ist es möglich, das System vor dem PHP zu beeinflussen. Mit Apache und mod_rewrite Dies kann für Unterordner mit ein wenig Trick erfolgen:

RewriteCond %{REQUEST_URI} ^/de/$
RewriteRule .* - [E=MAGE_RUN_CODE:deutsch]
RewriteCond %{ENV:REDIRECT_MAGE_RUN_CODE} (.+)
RewriteRule .* - [E=MAGE_RUN_CODE:%1]

Apache ist zuckend mit Umgebungsvariablen und Unterordnern Diese ausgezeichnete Antwort beantworten. Die ersten beiden Zeilen führen dazu $_SERVER["REDIRECT_MAGE_RUN_CODE"] = 'deutsch'; Während die beiden letztgenannten Zeilen die benötigten liefern $_SERVER["MAGE_RUN_CODE"] = 'deutsch';. Es gibt zahlreiche andere Tricks, aber das obige hat mich schon einmal gebissen.

Das Endziel sollte eine anfängliche Erkennung so sehr sein, wie dies angemessen ist (GeoIP + Multisprachige Bedenken), während der Benutzer das Store-Cookie festlegt, mit dem die Logik in nachfolgenden Anfragen umgehen/durchlaufen werden kann.

Andere Tipps

Wenn die eingebauten URLs (Unterordner) denselben Namen wie die Store -Codes haben können (warum nicht?), Sie können einfach aktiviert werden Configuration > Web > Url options > Add Store Code to Urls.

Wir haben genau das gemacht

Wir haben mit Enterprise -Unterstützung darüber verifiziert, dass der beste Weg, dies zu tun, durch die Erstellung von Unterordnern besteht.

Wir haben es so gemacht:

  • Erstellen Sie ein Verzeichnis "Sprachförderer"
  • Erstellt eine Kopie von Index.php im Verzeichnis zusammen mit einem angepassten .htaccess und symlinks zu den Magento -Ordnern (App/, Fehler/, ...)
  • Erstellte Symlinks "de", "en" usw. im Magento -Root -Verzeichnis, das auf das Verzeichnis "Sprachdatler" zeigt

Auf diese Weise können wir eine neue Sprache hinzufügen, indem wir einen neuen Symlink (z. B. "FR") erstellen.

Im Backend setzen wir den Laden base url zu domain.com/en

Wenn Sie Nginx verwenden, ist eine Aktualisierung Ihrer Standortverarbeitung erforderlich, um index.php auch im neuen Subordner zu verarbeiten. Dies muss für jeden neuen Übersetzungsordner erfolgen

Da ist ein Eintritt in die offizielle Magento -Wissensbasis Das beschreibt genau das.

Wenn Sie mit Apache arbeiten, stellen Sie sicher, dass alle virtuellen Host -Einträge (für jede Domäne) auf das gleiche Dokumentwurzel zeigen, in dem Ihre Magento -Installation liegt. Das ist für mehrere Domänen.

Die nächste (und letzte) Sache ist die .htaccess im selben Magento -Installationsordner. .htaccess ist eine leistungsstarke Konfigurationsdatei auf Verzeichnisebene, in der Sie Regeln für jede Serveranforderung festlegen können. Daher müssen Sie dort alle (Sub-) Domänen/Ordneraktionen verarbeiten und die korrekten Servervariablen festlegen, die Magento in der Initialisierungsphase verwendet.

Nachdem Sie mit der Serverkonfiguration fertig sind, müssen Sie für jeden Speicher in Magento Admin (System - Konfiguration - Allgemein - Web) verschiedene Basispfade festlegen.

Vergewissern Sie sich also, dass Sie dem offiziellen Leitfaden (der auch die bevorzugte Weise ist) und die Dinge reibungslos funktionieren.

Zuerst müssen Sie eine Konfiguration im Magento -Administratorfeld durchführen, dann ein Unterverzeichnis erstellen und den Index.Php und den .htaccess in das Unterverzeichnis verschieben und einige geringfügige Änderungen am Index.php vornehmen.

Hier ist ein vollständiges Beispiel dafür, wie es geht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top