繁体   English   中英

.htaccess 中的条件 php_flag 语句

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM