[英]Conditional php_flag statements in .htaccess
有没有办法在 .htaccess 中有条件地执行 php_flag 语句? 这是我正在尝试做的两件事:
如果客户端的 IP 地址与我使用的 IP 地址匹配,则打开错误报告:
if %{REMOTE_ADDR} == '12.34.56.78' then
php_flag error_reporting 1
else
php_flag error_reporting 0
如果 IP 地址与我的匹配,请关闭register_globals
,以便我可以调试由希望打开此功能的代码引起的任何问题。
if %{REMOTE_ADDR} == '12.34.56.78' then
php_flag register_globals on
else
php_flag register_globals on
谢谢阅读!
克里
我怀疑你第一次尝试的问题是你的正则表达式是“ ^192\\.168\\.0$
”。 这将永远不会匹配任何可能的Remote_Addr,因为您只有3个部分到IP地址,强制“ ^
”开始和“ $
”结束。
也许您打算使用正则表达式“ ^192\\.168\\.0\\.
”?
请注意,我最后排除了“ $
”,因此无论IP地址如何结束都无关紧要。 而且我已经包含了一个额外的“ \\.
”转义期,这样你就可以强制匹配的IP地址有一个实际的“ 0
”而不是“ 012
”,“ 001
”等等(不是这些零 -填充的部分应该存在于任何IP地址中)。
if %{REMOTE_ADDR} == '12.34.56.78' then php_flag error_reporting 1 else php_flag error_reporting 0
这只有随着 Apache 2.4+ 中Apache 表达式的出现才真正成为可能,在那里你可以做这种事情......
<If "%{REMOTE_ADDR} == '12.34.56.78'">
php_flag error_reporting 1
</If>
<Else>
php_flag error_reporting 0
</Else>
如果在 Apache 2.2 上这是不可能的,尤其是依赖于请求的东西,比如REMOTE_ADDR
。 在 Apache 2.2 上,您有<IfDefine>
,但这仅测试在 Appache 命令行上使用-D
选项定义的参数是否存在。 所以,这实际上是一个每服务器配置开关。 (在 Apache 2.4 上,您可以在服务器配置中使用Define
指令来有条件地定义参数,但是,这仍然无法根据请求 AFAIK 的元素进行定义。此外,无论如何,您都可以在 Apache 2.4 上使用 Apache 表达式.)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.