我试图在Apache上设置一个variables
如果http主机是开发者URL,则ENV = DEV
要么
如果http主机是prd URL,则ENV = PRD
然后使用$ _SERVER ['ENV']创build一些逻辑分支
到目前为止,这些都没有为我工作,我们已经安装了setenvif模块
SetEnvIfNoCase Referer SetEnvIfNoCase Remote_Host
什么是正确的方法来做到这一点?
快速浏览文档 :
SetEnvIf指令根据请求的属性定义环境variables。 在第一个参数中指定的属性可以是以下三件事之一:
HTTP请求头字段(有关这些的更多信息,请参阅RFC2616); 例如:主机,用户代理,引用者和接受语言。 正则expression式可以用来指定一组请求头。
所以,当然可以在Host标题中设置一个环境variables。 它看起来像你试图使用Referer或Remote_Host头,这两者都不是你想要的(虽然理论上Referer在大多数情况下应该包含Host头的值)。 Remote_Host会成为发出请求的客户端的主机名,这根本就不是你想要的(在大多数configuration中根本不可用,因为出于性能原因closures了DNS查找是典型的)。
尝试这样的事情:
SetEnvIf Host "www-dev.example.com" ENV=DEV SetEnvIf Host "www-production.example.com" ENV=PRD
…然后使用$ _SERVER ['ENV']创build一些逻辑分支
但是请注意,您可以直接在PHP中直接引用Host头的值,而不必经过这个骗局; $_SERVER['HTTP_HOST']将正是你想要的。