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

Могу ли я установить переменные среды в моем apache conf и использовать их при перезаписи htaccess?

У нас есть apache conf, определяющий кучу переменных env, например: /etc/apache2/conf-enabled/env.conf

SetEnv AWS_BUCKET "MY BUCKET"

Я хотел бы использовать эту переменную AWS_BUCKET в моей перезаписи следующим образом:

RewriteRule ^wp-content/uploads/(.*)$ https://s3.amazonaws.com/%{ENV:AS3CF_BUCKET}/wp-content/uploads/$1 [P]

Эта корзина меняется в зависимости от того, в какой серверной среде мы находимся, то есть - prod, staging, dev и local.

Что не работает. Я читал, что SetEnv вызывается после этих перезаписей, поэтому я должен использовать SetEnvIf для установки переменной. Однако использование SetEnvIf по-прежнему не работает, потому что не только не может не проверить, установлен ли AWS_BUCKET, но я все еще не могу прочитать переменную, потому что не устанавливается до тех пор, пока не будут перезаписаны и не будут вызваны SetEnvIf.

SetEnvIf также требует, чтобы необходимая переменная была установлена ​​в файле htaccess, что я не могу сделать, поскольку целью этого является предоставление решения для динамической среды.

Есть ли способ использовать эту заданную переменную из файла conf, или переменная должна быть установлена ​​как общесистемная?

ИЗМЕНИТЬ - К сожалению, у меня нет возможности добавлять или изменять конфигурацию apache. Сервер управляется другим отделом, который внедряет этот файл во время процесса сборки и развертывания в качестве шаблона с использованием предоставленных переменных.

Так что мне приходится работать и с тем, что у меня есть, а именно с веб-приложением и файлом htaccess. Я не уверен, что они внесут за меня какие-либо изменения в процесс.

Это работает, только если вы используете SetEnvIf вместо того SetEnv из-за способа обработки директив. Поэтому его нужно будет установить, используя что-то вроде:

SetEnvIf Request_URI ^ AWS_BUCKET="MY BUCKET"