如何仅针对 Apache 中的特定 IP 设置环境?

lin*_*nux 5 apache-2.2

我只想为特定 IP 设置一些环境,如何在 Apache 中执行此操作?

Kan*_*nji 3

请参阅SetEnvIf指令,它根据请求的属性定义环境变量,例如Remote_Addr(发出请求的客户端的 IP 地址)...

SetEnvIf Remote_Addr ^192\.168\.0\. LOCAL_LAN=1
Run Code Online (Sandbox Code Playgroud)

...或者Server_Addr(接收请求的服务器的 IP 地址)...

SetEnvIf Server_Addr ^192\.168\.0\.1$ SITE_PROFILE=PRODUCTION
SetEnvIf Server_Addr ^192\.168\.0\.2$ SITE_PROFILE=DEVELOPMENT
Run Code Online (Sandbox Code Playgroud)

请注意,第二个参数SetEnvIf是正则表达式,因此如果您想使用裸 IP,请格外小心,因为像 192.168.1.1 这样的模式(虽然看起来比我上面所做的转义点要干净得多)也会最终出现匹配 192.168.101.10。

更新:

SetEnvIf无法访问 QUERY_STRING,但根据文档:-

有关如何匹配查询字符串的更多信息,请参阅mod_rewriteRewriteCond指令。

所以像...

RewriteCond %{REMOTE_ADDR} ^192\.168\.0\.
RewriteCond %{QUERY_STRING} (^|&)debug=
RewriteRule . - [E=LOCAL_LAN_AND_DEBUG:1]
Run Code Online (Sandbox Code Playgroud)