Назад | Перейти на главную страницу

nginx map regexp для Magento MAGE_RUN_TYPE на основе nginx $ http_host и $ uri

Я пытаюсь написать конфигурацию nginx, которая добавляет настраиваемый заголовок и передает переменную с помощью fastcgi_param на основе двух переменных, которые вычисляются с использованием карты на основе $ uri и $ http_host.

map $uri $STORE_LANGUAGE {
    ~^/products en;
    ~^/de/produkte de;
    ~^/fr/produits fr;
    ~^/hu/termekek hu;
}
map $http_host $MAGE_RUN_CODE {
    www.example.com example_com_;
}

server {
    listen 80;
    add_header mage-run-code $MAGE_RUN_CODE$STORE_LANGUAGE;
    ...
    location ~ \.php$ {
       fastcgi_param MAGE_RUN_CODE $MAGE_RUN_CODE$STORE_LANGUAGE;
       fastcgi_param MAGE_RUN_TYPE store;
}

Цель состоит в том, чтобы иметь возможность передать код запуска мага в Magento 2.2 через fastcgi_param MAGE_RUN_CODE (и иметь заголовок как простой способ отладки на данный момент). Таким образом, Magento знает, какой вид магазина обслужить посетителя.

Приведенный выше код работает для www.example.com/products. (Ожидаемое поведение: example_com_en)

Что мне нужно изменить в регулярном выражении для STORE_LANGUAGE, чтобы www.example.com/products/tshirt.html тоже работал?

РЕДАКТИРОВАТЬ: для www.example.com/products $ MAGE_RUN_CODE вычисляется правильно ("example_com_"), как и $ STORE_LANGUAGE ("en"), что приводит к "example_com_en".

Для www.example.com/products/tshirt.html $ MAGE_RUN_CODE рассчитывается правильно (на основе $ http_host). Но $ STORE_LANGUAGE возвращает пустое значение. Таким образом, комбинация $ MAGE_RUN_CODE $ STORE_LANGUAGE является "example_com_", а не ожидаемым "example_com_en" для URL-адреса tshirt.html.