Многоязычное хранилище в виде подкаталога с символической ссылкой на nginx, возвращающее «нет маршрута на страницу»
-
12-12-2019 - |
Вопрос
нам нужно было настроить наш многоязычный магазин с помощью subdirectory/symlink
описан метод здесь.(прочитайте, почему @ внизу)
Как мы это сделали. Мы скопировали index.php в подкаталог и связали все папки символическими ссылками.А base url
был настроен на domain.com/en
Проблема/вопросТеперь, когда я открываю домен.com/en, я вижу сайт и показывает английскую версию.Единственное, все ссылки на категории и продукты выдают ошибку «нет пути к странице».Вместо показа категории или продукта.Как это может быть?
ПримерТак https://domain.com/en/funkyshoes
не открывает категорию funkyshoes, как и funkyshoes https://domain.com/funkyshoes
в этом отношении.https://domain.com/en/funkyshoes
возвращает => no route to page
https://domain.com/funkyshoes
возвращает => https://domain.com/en
почему нет?потому что у нас более одного мультимагазина и мы не можем присвоить каждому магазину языковой код store_code, например en/de/fr, а также у нас есть один мультимагазин с разными доменами для каждого магазина, а другой использует метод /en, /de, /fr из основного домена .
Решение 2
Еще лучшее решение:
location / {
try_files $uri $uri/ @rewrite;
}
location @rewrite {
rewrite /(../)? /$1index.php?$args;
}
потому что у нас были особые правила расположения для каталога|кассы|клиента.Проблема в том, что все они ссылались на @rewrite - таким образом нам пришлось переписать ВСЕ команды определения местоположения, которые были настроены, чтобы также иметь отдельное соответствие для /en и более поздних /fr и /de .....
Итак, мы придумали простейший запасной вариант: переписать этот тест сначала для /, а затем для / (двухбуквенный код)....и переписывает на основе этого
кажется, работает нормально
Кроме того, необходимо изменить поиск store_code.Из-за /en переменная http_host или переменная сервера больше не работают.
Возможное решение можно найти здесь:https://stackoverflow.com/questions/30078679/nginx-conf-w-multiple-maps-to-same-variable
Другие советы
Это проблема Nginx.
Добавление этого в файл конфигурации решило нашу проблему.
location /en {
rewrite ^/en(.*)$ /en/index.php last;
}