У нас есть 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"