Klient chce, aby jego sklep z wieloma sklepami był skonfigurowany w następujący sposób:
- http://www.domain1.org/de/ -> strona 1, widok sklepu 1
- http://www.domain1.org/en/ -> strona 1, widok sklepu 2
- http://www.domain1.ch/de/ -> witryna 2, widok sklepu 3
- http://www.domain1.ch/fr/ -> witryna 2, widok sklepu 4
- http://www.domain1.ch/it/ -> witryna 2, widok sklepu 5
- ...
To jest przykład, ale może być o wiele więcej różnych podfolderów. Jakie jest najlepsze podejście do obsługi różnych podfolderów dla różnych widoków / witryn sklepów?
Wiem, że jednym z rozwiązań jest stworzenie podfoldery o nazwie de
, en
itd. I skopiuj index.php i .htaccess do odpowiednich podfolderów.
Mogą też występować pewne obejścia (dowiązania symboliczne do index.php, konfiguracja vHost zamiast .htaccess) w celu zminimalizowania duplikacji plików, ale chciałbym znaleźć rozwiązanie, w którym nie muszę wprowadzać żadnych zmian w systemie plików, ale po prostu obsłużyć wszystko przez konfigurację.
AKTUALIZACJA
W ramach wsparcia dla przedsiębiorstw zweryfikowaliśmy, że najlepszym sposobem na to jest utworzenie podfolderów.
Skończyło się to tak:
- Utwórz katalog „folderów językowych”
- Utworzono kopię pliku index.php w katalogu wraz z dostosowanym plikiem .htaccess i dowiązaniami symbolicznymi do folderów Magento (app /, error /, ...)
- Utworzono dowiązania symboliczne „de”, „en” itp. W katalogu głównym Magento, wskazując katalog „folderów językowych”
W ten sposób możemy dodać nowy język, tworząc nowe dowiązanie symboliczne (np. „Fr”).
źródło
Odpowiedzi:
Obsługiwanie wielu domen / ścieżek na podstawie adresów URL jest bardzo łatwe. Jak wspomniano, najłatwiejsza konfiguracja (tylko konfiguracja) jest możliwa, gdy unikalne
core/store
kody mogą być użyte w ścieżce jako podfoldery . Wymaga to jednej z następujących czynności:Odnośnie # 3: od wersji 1.4 Magento umożliwiło serwerowi sieciowemu określenie działającego kontekstu ( strony internetowej lub sklepu ), a także konkretnego kodu, który powinien zostać użyty. From index.php :
Podczas gdy zmienne środowiskowe są używane do inicjalizacji aplikacji, istnieje możliwość wpływania na system jeszcze przed uruchomieniem PHP. Z Apache i
mod_rewrite
można to zrobić dla podfolderów z odrobiną oszustwa:Apache jest niepewny ze zmiennymi środowiskowymi i podfolderami, o czym świadczy ta doskonała odpowiedź SO . Pierwsze dwa wiersze dają wynik,
$_SERVER["REDIRECT_MAGE_RUN_CODE"] = 'deutsch';
podczas gdy dwa ostatnie wiersze zapewniają potrzebne$_SERVER["MAGE_RUN_CODE"] = 'deutsch';
. Istnieje wiele innych sztuczek, ale powyższe wcześniej mnie ugryzły.Ostatecznym celem powinno być wstępne wykrycie, o ile jest to uzasadnione (geoip + obawy dotyczące wielu języków), jednocześnie zachęcając użytkownika do ustawienia pliku cookie sklepu, którego można użyć do obejścia / przejścia przez logikę w kolejnych żądaniach.
źródło
mode_rewrite
HTTP_HOST
Jeśli wcięte adresy URL (podfoldery) mogą mieć takie same nazwy jak kody sklepów (dlaczego nie?), Możesz je po prostu włączyć
Configuration > Web > Url options > Add Store Code to Urls
.źródło
Add store codes to url
w widoku sklepu? magento.stackexchange.com/questions/60686/... = załóżmy, że jest tam 1 sklep wielostanowiskowy z domenami sep, inne zastosowania / en i / frtak się skończyło
W ramach wsparcia dla przedsiębiorstw zweryfikowaliśmy, że najlepszym sposobem na to jest utworzenie podfolderów.
W backendie ustawiliśmy sklep
base url
nadomain.com/en
Jeśli używasz nginx, konieczna jest aktualizacja przetwarzania lokalizacji w celu przetworzenia pliku index.php również w nowym podfolderze. Należy to zrobić dla każdego nowego folderu tłumaczenia
źródło
location @rewrite { rewrite /(../)? /$1index.php; }
W oficjalnej bazie wiedzy Magento znajduje się wpis, który dokładnie to opisuje.
Jeśli pracujesz z Apache, upewnij się, że wszystkie wpisy hosta wirtualnego (dla każdej domeny) wskazują ten sam katalog główny dokumentu, w którym znajduje się instalacja Magento. To dotyczy wielu domen.
Następną (i ostatnią) rzeczą jest .htaccess w tym samym folderze instalacyjnym Magento. .htaccess to potężny plik konfiguracyjny na poziomie katalogu, w którym można ustawić działania reguł dla każdego żądania serwera. Musisz więc obsłużyć wszystkie różne działania (pod) domen / folderów i ustawić prawidłowe zmienne serwera, których Magento używa na etapie inicjalizacji.
Po zakończeniu konfiguracji serwera będziesz musiał ustawić różne ścieżki podstawowe dla każdego sklepu w Magento admin (system - konfiguracja - ogólnie - sieć).
Upewnij się więc, że postępujesz zgodnie z oficjalnym przewodnikiem (który jest również preferowanym sposobem), a wszystko powinno działać płynnie.
źródło
Najpierw musisz wykonać konfigurację w panelu administracyjnym Magento, następnie utworzyć podkatalog, przenieść katalog index.php i .htaccess do podkatalogu i wprowadzić niewielkie zmiany w pliku index.php.
Oto kompletny przykład tego, jak to zrobić.
źródło