環境変数の値を取得して、Apacheの別の変数に割り当てたいのですが。
たとえば、$_SERVER['REMOTE_ADDR']
の値を取得して$_SERVER['USER-IP']
に割り当て、$_SERVER['REMOTE_ADDR']
を127.0.0.1
にオーバーライドします。
REMOTE_ADDRの値を取得できない
<IfDefine !USER-IP>
SetEnv USER-IP %{REMOTE_ADDR}
SetEnv REMOTE_ADDR '127.0.0.1'
</IfDefine>
ドキュメントを見て、$_SERVER['REMOTE_ADDR']
varは厳密には環境変数ではありませんが、Webサーバーによってcgiコンテキストに提供されるcgi要求メタ変数です。 http://www.faqs.org/rfcs/rfc3875.html
メタ変数には、サーバーからスクリプトに渡されたリクエストに関するデータが含まれています
meta-variable-name = "AUTH_TYPE" | "CONTENT_LENGTH" |
"CONTENT_TYPE" | "GATEWAY_INTERFACE" |
"PATH_INFO" | "PATH_TRANSLATED" |
"QUERY_STRING" | "REMOTE_ADDR" |
"REMOTE_Host" | "REMOTE_IDENT" |
"REMOTE_USER" | "REQUEST_METHOD" |
"SCRIPT_NAME" | "SERVER_NAME" |
"SERVER_PORT" | "SERVER_PROTOCOL" |
"SERVER_SOFTWARE" | scheme |
Apacheのドキュメントは、これらの変数は標準のSetEnv
styleディレクティブを使用してオーバーライドできないことを示しています
注意事項
環境操作ディレクティブを使用して標準CGI変数をオーバーライドまたは変更することはできません。
https://httpd.Apache.org/docs/2.4/env.html#setting
したがって、Apache confからこれらの値を簡単に設定できる可能性は低いと思います
(既存のサーバー変数から)
<Directory /var/www/server111>
Order allow,deny
Allow from all
# This syntax works, as you can see from the image below...
RewriteEngine On
RewriteRule .* - [E=USER-IP:%{REMOTE_ADDR}]
# none of these syntax seem to work
SetEnv USERIP %{REMOTE_ADDR}
SetEnv USERIP2 blah
SetEnv USERIP3 ${REMOTE_ADDR}
SetEnv USERIP6 %{ENV:REMOTE_ADDR}
</Directory>