Un client souhaite que sa boutique à plusieurs magasins soit configurée comme suit:
- http://www.domain1.org/de/ -> site Web 1, vue magasin 1
- http://www.domain1.org/en/ -> site Web 1, vue magasin 2
- http://www.domain1.ch/de/ -> site web 2, vue magasin 3
- http://www.domain1.ch/fr/ -> site web 2, vue magasin 4
- http://www.domain1.ch/it/ -> site Web 2, vue magasin 5
- ...
Ceci est un exemple mais il peut y avoir beaucoup plus de sous-dossiers différents. Quelle est la meilleure approche pour gérer différents sous-dossiers pour différentes vues de magasin / sites Web?
Je sais qu'une solution consiste à créer des sous-dossiers appelés de
, en
etc. et à copier les index.php et .htaccess dans les sous-dossiers correspondants.
Il peut également y avoir des solutions de contournement (liens symboliques pour index.php, configuration de vHost au lieu d'utiliser .htaccess) pour minimiser la duplication de fichiers mais j'aimerais trouver une solution où je n'ai pas à faire de changements dans le système de fichiers mais juste gérer tout par configuration.
MISE À JOUR
Nous avons vérifié auprès de l'assistance Enterprise que la meilleure façon de le faire est de créer des sous-dossiers.
Nous avons fini par le faire comme ceci:
- Créer un répertoire "dossiers linguistiques"
- Création d'une copie de index.php dans le répertoire avec un .htaccess ajusté et des liens symboliques vers les dossiers Magento (app /, erreurs /, ...)
- Création de liens symboliques "de", "en" etc. dans le répertoire racine de Magento pointant vers le répertoire "dossiers linguistiques"
De cette façon, nous pouvons ajouter une nouvelle langue en créant un nouveau lien symbolique (par exemple "fr").
la source
Réponses:
Il est très facile de servir plusieurs domaines / chemins en fonction des URL. Comme mentionné, la configuration la plus simple (configuration uniquement) est possible lorsque les
core/store
codes uniques peuvent être utilisés dans le chemin en tant que sous-dossiers . Cela nécessite l'un des éléments suivants:Concernant # 3: depuis 1.4 Magento, a permis de permettre au serveur Web de déterminer le contexte de fonctionnement ( site web ou magasin ) ainsi que le code particulier à utiliser. Depuis index.php :
Alors que les variables d'environnement sont utilisées pour initialiser l'application, il est possible d'influencer le système avant même que PHP ne tourne. Avec Apache et
mod_rewrite
cela peut être fait pour les sous-dossiers avec un peu de ruse:Apache est nerveux avec les variables d'environnement et les sous-dossiers, comme le démontre cette excellente réponse SO . Les deux premières lignes résultent
$_SERVER["REDIRECT_MAGE_RUN_CODE"] = 'deutsch';
alors que les deux dernières lignes fournissent le nécessaire$_SERVER["MAGE_RUN_CODE"] = 'deutsch';
. Il existe de nombreuses autres astuces, mais ce qui précède m'a déjà mordu.L'objectif final doit être la détection initiale autant que raisonnable (géoip + problèmes multilingues) tout en amenant l'utilisateur à définir le cookie de stockage qui peut être utilisé pour contourner / parcourir la logique dans les requêtes suivantes.
la source
mode_rewrite
) basée sur leHTTP_HOST
niveau de sous-dossier + 1.Si les URL (sous-dossiers) en retrait peuvent avoir le même nom que les codes de magasin (pourquoi pas?), Vous pouvez simplement les activer
Configuration > Web > Url options > Add Store Code to Urls
.la source
Add store codes to url
un paramètre de vue de magasin? magento.stackexchange.com/questions/60686/… = supposons qu'il y ait 1 magasin multiple avec des domaines sep, les autres utilisent / en et / frnous avons fini par faire exactement cela
Nous avons vérifié auprès de l'assistance Enterprise que la meilleure façon de le faire est de créer des sous-dossiers.
Dans le backend, nous avons réglé le magasin
base url
surdomain.com/en
Si vous utilisez nginx, une mise à jour de votre traitement d'emplacement est nécessaire pour traiter index.php également dans le nouveau sous-dossier. Cela doit être fait pour chaque nouveau dossier de traduction
la source
location @rewrite { rewrite /(../)? /$1index.php; }
Il existe une entrée dans la base de connaissances officielle de Magento qui décrit exactement cela.
Dans le cas où vous travaillez avec Apache, assurez-vous que toutes les entrées d'hôte virtuel (pour chaque domaine) pointent vers la même racine de document où se trouve votre installation Magento. C'est pour plusieurs domaines.
La prochaine (et dernière) chose est le .htaccess dans le même dossier d'installation de Magento. .htaccess est un puissant fichier de configuration au niveau du répertoire où vous pouvez définir des règles-actions pour chaque demande de serveur. Vous devrez donc gérer toutes les actions de (sous-) domaines / dossiers différents et définir les variables de serveur correctes que Magento utilise lors de l'initialisation.
Une fois la configuration du serveur terminée, vous devrez définir différents chemins de base pour chacun des magasins dans l'administration Magento (système - configuration - général - web).
Assurez-vous donc de suivre le guide officiel (qui est également le moyen préféré) et les choses devraient fonctionner sans heurts.
la source
Vous devez d'abord effectuer une configuration dans le panneau d'administration de Magento, puis créer un sous-répertoire, déplacer le index.php et le .htaccess dans le sous-répertoire et apporter des modifications mineures au index.php.
Voici un exemple complet de la façon de procéder.
la source