Я пытаюсь установить переменные среды Apache (для использования в PHP) с флагом [E=VAR:VAL]
в правилах RewriteRule в файле .htaccess.
Я уже обнаружил, что переменные доступны в PHP как серверные переменные $_SERVER
, а не $_ENV
(что делает определенный смысл). Однако моя проблема заключается в некоторых правилах, флаг [E=VAR:VAL]
работает так, как ожидалось, и я получаю переменную $_SERVER['VAR']
, но для других правил я заканчиваю переменной $_SERVER['REDIRECT_VAR']
или $_SERVER['REDIRECT_REDIRECT_VAR']
и т.д.
а. Что вызывает переменную окружения, установленную в Apache с использованием флага [E=VAR:VAL]
, чтобы переименовать, добавив "REDIRECT_" к имени переменной?
В. Что я могу сделать, чтобы убедиться, что в итоге у меня есть переменная среды с неизменным именем, поэтому я могу получить доступ к ней в PHP как $_SERVER['VAR']
, не прибегая к проверке вариантов имени переменной, имеющего один из экземпляров "REDIRECT_", добавлено к нему?
найдено частичное решение. Добавление следующего к началу правил перезаписи воссоздает исходный ENV: VAR при каждом переадресации (а также оставляя там версии REDIRECT_VAR), если они необходимы:
RewriteCond %{ENV:REDIRECT_VAR} !^$
RewriteRule .* - [E=VAR:%{ENV:REDIRECT_VAR}]