Я пытаюсь написать конфигурацию 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.