Я пытаюсь установить переменную на Apache
ENV = DEV, если http-хост - это URL-адрес разработчика
или
ENV = PRD, если http-хост является URL-адресом prd
а затем используйте $ _SERVER ['ENV'], чтобы создать несколько логических ветвей
Пока ни один из них у меня не работал, и у нас установлен модуль setenvif.
SetEnvIfNoCase Referer
SetEnvIfNoCase Remote_Host
Как правильно это сделать?
Беглый взгляд на документация:
Директива SetEnvIf определяет переменные среды на основе атрибутов запроса. Атрибут, указанный в первом аргументе, может быть одним из трех:
Поле заголовка HTTP-запроса (дополнительную информацию см. В RFC2616); например: Host, User-Agent, Referer и Accept-Language. Регулярное выражение может использоваться для указания набора заголовков запроса.
Итак, безусловно, можно сделать переменную среды условной для Host
заголовок. Похоже, вы пытаетесь использовать Referer
или Remote_Host
заголовки, ни один из которых не совсем то, что вам нужно (хотя теоретически Referer
должен содержать значение Host
заголовок в большинстве случаев). Remote_Host
будет именем хоста клиент выполнение запроса, что совсем не то, что вы хотите (и в большинстве конфигураций будет просто недоступно, так как поиск DNS обычно отключен по соображениям производительности).
Попробуйте что-то вроде этого:
SetEnvIf Host "www-dev\.example\.com" ENV=DEV
SetEnvIf Host "www-production\.example\.com" ENV=PRD
... а затем используйте $ _SERVER ['ENV'], чтобы создать несколько логических ветвей
Но обратите внимание, что вы можете просто сослаться на значение Host
заголовок прямо в PHP, не прибегая к этой уловке; $_SERVER['HTTP_HOST']
будет именно то, что вы хотите.