gpt4 book ai didi

apache - 使用 SetEnv 重写Cond

转载 作者:行者123 更新时间:2023-12-02 00:52:37 27 4
gpt4 key购买 nike

在我的.htaccess中我设置:

SetEnv APPLICATION_ENV development

我想检查 APPLICATION_ENV 是否等于 development 然后运行 ​​app_dev.php,否则 app.php

SetEnv APPLICATION_ENV development

RewriteCond %{ENV:APPLICATION_ENV} development
RewriteRule .? %{ENV:BASE}/app_dev.php [L]
RewriteRule .? %{ENV:BASE}/app.php [L]

但是它不起作用 - 始终运行 app.php 脚本。我应该如何解决它?

最佳答案

由于我必须自己测试这个并且只能确认你写的内容是正确的,所以我开始环顾四周,发现了这个 post关于 SetEnvSetEnvIfRewriteRule 可见性。看起来 SetEnv 对于 RewriteCond 不可见,如果我更改您的示例以使用:

SetEnvIf APPLICATION_ENV  ^(.*)$ APPLICATION_ENV=development

我实际上得到了加载app_dev.php的规则。您也可以使用 RewriteRule 设置变量:

RewriteRule .* - [E=APPLICATION_ENV:development,NE]

但是,看起来 SetEnv 无法使用(在 Apache 2.2.22 上测试)。

编辑
正如 julp 在这篇文章的评论中指出的那样,这在 Apache 文档部分 Setting Environment Variables 中非常清楚。 :

The SetEnv directive runs late during request processing meaning that directives 
such as SetEnvIf and RewriteCond will not see the variables set with it.

关于apache - 使用 SetEnv 重写Cond,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19362746/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com