Answers:
快速浏览文档:
SetEnvIf指令根据请求的属性定义环境变量。第一个参数中指定的属性可以是以下三种情况之一:
HTTP请求标头字段(有关这些的更多信息,请参阅RFC2616);例如:主机,用户代理,引荐来源和接受语言。正则表达式可用于指定一组请求标头。
因此,当然有可能使环境变量取决于Host标头。似乎您正在尝试使用Refereror 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']将会完全满足您的需求。
SetEnvIf文档说是第三个参数是一个正则表达式,不应该在域名点用反斜杠进行转义?还是用双引号引起来的值使Apache将其视为字符串文字?
"www-dev.example.com"正则表达式还将匹配意外的主机名,例如www-dev-example.com。您将获得预期的比赛以及更多。我现在更新了示例。