.htaccess - サーバー環境変数 server internals

DOCUMENT_ROOT

DOCUMENT_ROOT は、Web サーバの公開ディレクトリまでのパス情報が含まれます。例えば、さくらインターネットの場合は /home/murashun/www 配下が公開ディレクトリとなるため、"/home/murashun/www" が格納されます。サーバによっては public_html ディレクトリなど名前やパスが異なる場合があります。

# Rewriteエンジンを起動
RewriteEngine On

# リクエストされたファイルがアーカイブのディレクトリにあるか確認
RewriteCond %{REQUEST_URI} ^(.*\.html)$
RewriteCond %{DOCUMENT_ROOT}/archive/%1 -f

# アーカイブのディレクトリにあれば書き換える
RewriteRule ^(.*)$ /archive/%1 [L]
他のディレクトリからファイルを探す例

SERVER_ADMIN

SERVER_ADMIN は、Web サーバの設定で指定された管理者のメールアドレス情報が含まれます。Web サイトの管理者ではなく、Web サーバの管理者のメールアドレスであることに注意して下さい。SERVER_ADMIN に格納されている値は、httpd.conf の ServerAdmin ディレクティブに設定された値が返されます。また、メールアドレスではなく URL が設定されている場合もあります。例えば、さくらインターネットの場合は、"support@sakura.ad.jp" が格納されています。

# Web サーバ管理者のメールアドレス
admin@your-domain.com
SERVER_ADMIN の値

SERVER_NAME

SERVER_NAME は、Webサーバ名の情報が含まれます。SERVER_NAME は HTTP_HOST と似ているため注意が必要です。SERVER_NAME は httpd.conf の ServerName ディレクティブに設定された値を返します。HTTP_HOST は リクエストの HTTP ヘッダ情報に含まれるホスト名を返します。ただし、ServerName が指定されていないときは、サーバは IP アドレスから逆引きを行いホスト名を探します。例えば、さくらインターネットの場合は、"murashun.jp" が格納されています。

# ServerName の定義値
hoge.sakura.ne.jp
SERVER_NAME の一例

SERVER_ADDR

SERVER_ADDR は、Web サーバの IP アドレス情報が含まれます。

# サーバの IP アドレス
10.20.30.40:80
SERVER_ADDR の一例

SERVER_PORT

SERVER_PORT は、Webサーバのポート番号の情報が含まれます。ポート番号から http か https か判断できます。一般的には、http は 80、https は 443 が割り当てられます。

# Rewriteエンジンを起動
RewriteEngine On

# ポート番号が80ならhttp, 443ならhttpsに書き換える 
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R,L]
RewriteCond %{SERVER_PORT} ^443$
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R,L]
ポート番号からプロトコルを変更する例

SERVER_PROTOCOL

SERVER_PROTOCOL は、プロトコル名やバージョンの情報が含まれます。

# サーバプロトコル情報
HTTP/1.1
SERVER_PROTOCOL の一例

SERVER_SOFTWARE

SERVER_SOFTWARE は、Webサーバのソフトウェア名、およびバージョン情報が含まれます。

# さくらのレンタルサーバの例 (2015年9月時点)
Apache/2.2.29
SERVER_SOFTWARE の一例

関連記事