有没有办法在.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
感谢阅读!
答案 0 :(得分:1)
凯瑞,
我怀疑你第一次尝试的问题是你的正则表达式是“^192\.168\.0$
”。这永远不会匹配任何可能的Remote_Addr,因为您只有3个部分到IP地址,强制“^
”开始和“$
”结束。
也许您打算使用正则表达式“^192\.168\.0\.
”?
请注意,我最后排除了“$
”,因此无论IP地址如何结束都无关紧要。我已经包含了一个额外的“\.
”转义期,这样您就可以强制匹配的IP地址生成“0
”而不是“012
”, “001
”等(并非这些零填充部分应存在于任何IP地址中)。
答案 1 :(得分:1)
if %{REMOTE_ADDR} == '12.34.56.78' then php_flag error_reporting 1 else php_flag error_reporting 0
只有在Apache 2.4+中Apache Expressions出现之后,这才真正可能,您可以在其中做这种事情...
<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>
,但这仅测试了在-D
选项的Appache命令行中定义的参数的存在。因此,这实际上是每个服务器的配置开关。 (在Apache 2.4上,您可以在服务器配置中使用Define
伪指令在某种程度上有条件地 define 参数,但是,仍然不能基于请求AFAIK的元素来定义此参数。此外,您仍然可以在Apache 2.4上使用Apache表达式。)