Краткое описание
Мне нужно установить переменную среды в настройке сайта Apache, которая определяет, является ли сайт dev, бета-версией или продукцией.
Файл htaccess в корневом каталоге сети будет определять переменные конфигурации для веб-сайта (учетные данные, домен и т.д.) на основе записи в конфигурации Apache
ТАКЖЕ Мне нужно использовать одну из переменных, определенных в корнях htaccess в другом htaccess, расположенном в другом каталоге.
Конфигурация сайта
Конфигурация Apache (dev/beta)
Я хотел бы установить переменную среды для своих dev и бета-сред в своих файлах конфигурации сайта Apache
Что-то вроде этого:
(Я уверен, что это не правильный синтаксис)
SetEnv environment_type dev
- или -
SetEnv environment_type beta
Конфигурация Apache (производство)
Производственные сайты Apache config может либо не устанавливать его вообще, либо он мог бы сделать:
SetEnv environment_type prod
Но это было бы необязательно
.htaccess(Установить настройки конфигурации сайта)
Конфигурационные переменные, используемые для подключения к базе данных, имени домена и т.д., затем будут установлены в файле .htaccess в общедоступном webroot следующим образом:
(опять же, просто синтаксис макета)
<If (environment_type exists) && (environment_type == dev)>
SetEnv base_dir /www/example.com/dev/
SetEnv db_host localhost
SetEnv db_name devdb
SetEnv db_user devuser
SetEnv db_password devpass
SetEnv web_domain www.devdomain.com
SetEnv cookie_domain .devdomain.com
<elseif (environment_type exists) && (environment_type == beta)>
SetEnv base_dir /www/example.com/beta/
SetEnv db_host localhost
SetEnv db_name betadb
SetEnv db_user betauser
SetEnv db_password betapass
SetEnv web_domain www.betadomain.com
SetEnv cookie_domain .betadomain.com
<else>
SetEnv base_dir /www/example.com/www/
SetEnv db_host localhost
SetEnv db_name proddb
SetEnv db_user produser
SetEnv db_password prodpass
SetEnv web_domain www.proddomain.com
SetEnv cookie_domain .proddomain.com
</If>
Использование определенных настроек
Мне нужно иметь возможность использовать эти новые конфигурационные переменные не только в моих php-скриптах, но и в другом файле .htaccess в подкаталоге
Другой файл .htaccess
У меня есть другой файл .htaccess, который находится в подкаталоге, и его цель - обеспечить базовую HTTP-аутентификацию для этой области.
Проблема
Запись AuthUserFile, указывающая на файл .htpasswd, должна быть динамической на основе переменных среды.
Что мне нужно:
AuthName "Admin Area"
AuthType "Basic"
AuthUserFile base_dir + "/web/sam/.htpasswd"
AuthGroupFile "/dev/null"
ErrorDocument 404 /sam/error.shtml
<Limit GET POST>
require valid-user
</Limit>
Текущий .htaccess:
AuthName "Admin Area"
AuthType "Basic"
AuthUserFile "/www/example.com/beta/web/sam/.htpasswd"
AuthGroupFile "/dev/null"
ErrorDocument 404 /sam/error.shtml
<Limit GET POST>
require valid-user
</Limit>
config.php
Я уже знаю, что это работает
Мои конфигурационные файлы php могли бы получить значения конфигурации так:
<?php
$db['default']['hostname'] = getenv('db_host');
$db['default']['username'] = getenv('db_user');
$db['default']['password'] = getenv('db_password');
$db['default']['database'] = getenv('db_name');
?>