我正在尝试在 Apache 上设置一个变量
ENV=DEV 如果 http 主机是开发 URL
或者
ENV=PRD 如果http主机是prd URL
然后使用 $_SERVER['ENV'] 创建一些逻辑分支
到目前为止,这些都不适合我,我们确实安装了 setenvif 模块
SetEnvIfNoCase Referer
SetEnvIfNoCase Remote_Host
Run Code Online (Sandbox Code Playgroud)
这样做的正确方法是什么?
lar*_*sks 17
快速浏览一下文档:
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
Run Code Online (Sandbox Code Playgroud)
...然后使用 $_SERVER['ENV'] 创建一些逻辑分支
但还要注意,您可以Host
直接在 PHP 中直接引用标头的值,而无需通过这个诡计;$_SERVER['HTTP_HOST']
将有你想要的。
归档时间: |
|
查看次数: |
37777 次 |
最近记录: |