env.xml.ja revision 27dcd8d81085fd60aadcd8a9bad35a607b26b758
a1a48072301767054f2a9ff7ccf8974b0d6a6a28Christian Maeder<?xml version="1.0" encoding="UTF-8" ?>
a1a48072301767054f2a9ff7ccf8974b0d6a6a28Christian Maeder<!DOCTYPE manualpage SYSTEM "/style/manualpage.dtd">
a1a48072301767054f2a9ff7ccf8974b0d6a6a28Christian Maeder<?xml-stylesheet type="text/xsl" href="/style/manual.ja.xsl"?>
a1a48072301767054f2a9ff7ccf8974b0d6a6a28Christian Maeder<!-- English Revision: 659902:782860 (outdated) -->
a1a48072301767054f2a9ff7ccf8974b0d6a6a28Christian Maeder
a1a48072301767054f2a9ff7ccf8974b0d6a6a28Christian Maeder<!--
a1a48072301767054f2a9ff7ccf8974b0d6a6a28Christian Maeder Licensed to the Apache Software Foundation (ASF) under one or more
a1a48072301767054f2a9ff7ccf8974b0d6a6a28Christian Maeder contributor license agreements. See the NOTICE file distributed with
a1a48072301767054f2a9ff7ccf8974b0d6a6a28Christian Maeder this work for additional information regarding copyright ownership.
a1a48072301767054f2a9ff7ccf8974b0d6a6a28Christian Maeder The ASF licenses this file to You under the Apache License, Version 2.0
a1a48072301767054f2a9ff7ccf8974b0d6a6a28Christian Maeder (the "License"); you may not use this file except in compliance with
a1a48072301767054f2a9ff7ccf8974b0d6a6a28Christian Maeder the License. You may obtain a copy of the License at
a1a48072301767054f2a9ff7ccf8974b0d6a6a28Christian Maeder
a1a48072301767054f2a9ff7ccf8974b0d6a6a28Christian Maeder http://www.apache.org/licenses/LICENSE-2.0
a1a48072301767054f2a9ff7ccf8974b0d6a6a28Christian Maeder
a1a48072301767054f2a9ff7ccf8974b0d6a6a28Christian Maeder Unless required by applicable law or agreed to in writing, software
5b3e0bbb6a776c60dc14113435a44e7b13d2fa01Christian Maeder distributed under the License is distributed on an "AS IS" BASIS,
a1a48072301767054f2a9ff7ccf8974b0d6a6a28Christian Maeder WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
5b3e0bbb6a776c60dc14113435a44e7b13d2fa01Christian Maeder See the License for the specific language governing permissions and
a1a48072301767054f2a9ff7ccf8974b0d6a6a28Christian Maeder limitations under the License.
a1a48072301767054f2a9ff7ccf8974b0d6a6a28Christian Maeder-->
a1a48072301767054f2a9ff7ccf8974b0d6a6a28Christian Maeder
a1a48072301767054f2a9ff7ccf8974b0d6a6a28Christian Maeder<manualpage metafile="env.xml.meta">
5b3e0bbb6a776c60dc14113435a44e7b13d2fa01Christian Maeder
5b3e0bbb6a776c60dc14113435a44e7b13d2fa01Christian Maeder <title>Apache の環境変数</title>
5b3e0bbb6a776c60dc14113435a44e7b13d2fa01Christian Maeder
a1a48072301767054f2a9ff7ccf8974b0d6a6a28Christian Maeder <summary>
5b3e0bbb6a776c60dc14113435a44e7b13d2fa01Christian Maeder <p>Apache HTTP サーバは<em>環境変数</em>と呼ばれる、名前のついた
5b3e0bbb6a776c60dc14113435a44e7b13d2fa01Christian Maeder 変数に情報を記憶する仕組みを提供しています。この情報はログ収集や
5b3e0bbb6a776c60dc14113435a44e7b13d2fa01Christian Maeder アクセス制御などのいろいろな操作を制御するために使うことができます。
0c92a39a4adf3c1cbe173e3b16c65c159a1ce612Christian Maeder これらの変数は CGI スクリプトなどの外部プログラムと通信するためにも
0c92a39a4adf3c1cbe173e3b16c65c159a1ce612Christian Maeder 使われます。この文書はそれらの変数の操作方法と使用方法をいくつか
0c92a39a4adf3c1cbe173e3b16c65c159a1ce612Christian Maeder 紹介します。</p>
0c92a39a4adf3c1cbe173e3b16c65c159a1ce612Christian Maeder
0c92a39a4adf3c1cbe173e3b16c65c159a1ce612Christian Maeder <p>これらの変数は<em>環境変数</em>と呼ばれていますが、オペレーティング
0c92a39a4adf3c1cbe173e3b16c65c159a1ce612Christian Maeder システムによって制御されている環境変数と同じではありません。
0c92a39a4adf3c1cbe173e3b16c65c159a1ce612Christian Maeder 実際は、これらの変数は Apache の内部構造の中に記憶され、操作されています。
0c92a39a4adf3c1cbe173e3b16c65c159a1ce612Christian Maeder それらは、CGI や SSI スクリプトに渡されたときだけ、実際の
5b3e0bbb6a776c60dc14113435a44e7b13d2fa01Christian Maeder オペレーティングシステムの環境変数になります。サーバ自身が
5b3e0bbb6a776c60dc14113435a44e7b13d2fa01Christian Maeder 実行されているオペレーティングシステムの環境を操作したい場合は、
5b3e0bbb6a776c60dc14113435a44e7b13d2fa01Christian Maeder オペレーティングシステムのシェルが提供している標準の環境変数の
5b3e0bbb6a776c60dc14113435a44e7b13d2fa01Christian Maeder 操作方法を使わなければなりません。</p>
0c92a39a4adf3c1cbe173e3b16c65c159a1ce612Christian Maeder </summary>
0c92a39a4adf3c1cbe173e3b16c65c159a1ce612Christian Maeder
0c92a39a4adf3c1cbe173e3b16c65c159a1ce612Christian Maeder <section id="setting">
0c92a39a4adf3c1cbe173e3b16c65c159a1ce612Christian Maeder <title>環境変数の設定</title>
0c92a39a4adf3c1cbe173e3b16c65c159a1ce612Christian Maeder <related>
0c92a39a4adf3c1cbe173e3b16c65c159a1ce612Christian Maeder <modulelist>
0c92a39a4adf3c1cbe173e3b16c65c159a1ce612Christian Maeder <module>mod_env</module>
0c92a39a4adf3c1cbe173e3b16c65c159a1ce612Christian Maeder <module>mod_rewrite</module>
0c92a39a4adf3c1cbe173e3b16c65c159a1ce612Christian Maeder <module>mod_setenvif</module>
a1a48072301767054f2a9ff7ccf8974b0d6a6a28Christian Maeder <module>mod_unique_id</module>
d4aed7a2eea6b546c0d9520d85038addb7beb12fChristian Maeder </modulelist>
d4aed7a2eea6b546c0d9520d85038addb7beb12fChristian Maeder <directivelist>
d4aed7a2eea6b546c0d9520d85038addb7beb12fChristian Maeder <directive module="mod_setenvif">BrowserMatch</directive>
a1a48072301767054f2a9ff7ccf8974b0d6a6a28Christian Maeder <directive module="mod_setenvif">BrowserMatchNoCase</directive>
5b3e0bbb6a776c60dc14113435a44e7b13d2fa01Christian Maeder <directive module="mod_env">PassEnv</directive>
5b3e0bbb6a776c60dc14113435a44e7b13d2fa01Christian Maeder <directive module="mod_rewrite">RewriteRule</directive>
5b3e0bbb6a776c60dc14113435a44e7b13d2fa01Christian Maeder <directive module="mod_env">SetEnv</directive>
5b3e0bbb6a776c60dc14113435a44e7b13d2fa01Christian Maeder <directive module="mod_setenvif">SetEnvIf</directive>
d4aed7a2eea6b546c0d9520d85038addb7beb12fChristian Maeder <directive module="mod_setenvif">SetEnvIfNoCase</directive>
a1a48072301767054f2a9ff7ccf8974b0d6a6a28Christian Maeder <directive module="mod_env">UnsetEnv</directive>
5b3e0bbb6a776c60dc14113435a44e7b13d2fa01Christian Maeder </directivelist>
5b3e0bbb6a776c60dc14113435a44e7b13d2fa01Christian Maeder </related>
a1a48072301767054f2a9ff7ccf8974b0d6a6a28Christian Maeder
bb2c1beb7ab66a49627a2a34df80864a3c65cc83Christian Maeder <section id="basic-manipulation">
5b3e0bbb6a776c60dc14113435a44e7b13d2fa01Christian Maeder <title>基本的な環境の操作</title>
bb2c1beb7ab66a49627a2a34df80864a3c65cc83Christian Maeder
bb2c1beb7ab66a49627a2a34df80864a3c65cc83Christian Maeder <p>Apache において環境変数を設定する一番基本的な方法は、
bb2c1beb7ab66a49627a2a34df80864a3c65cc83Christian Maeder 無条件に環境変数を設定する <directive module="mod_env"
bb2c1beb7ab66a49627a2a34df80864a3c65cc83Christian Maeder >SetEnv</directive> ディレクティブを使用することです。
bb2c1beb7ab66a49627a2a34df80864a3c65cc83Christian Maeder <directive module="mod_env">PassEnv</directive>
bb2c1beb7ab66a49627a2a34df80864a3c65cc83Christian Maeder ディレクティブにより、Apache が起動されたシェルの
bb2c1beb7ab66a49627a2a34df80864a3c65cc83Christian Maeder 環境変数を渡すこともできます。</p>
a1a48072301767054f2a9ff7ccf8974b0d6a6a28Christian Maeder
38824a7dba4f7d82532afec67e0b594a5af5d76bChristian Maeder </section>
a1a48072301767054f2a9ff7ccf8974b0d6a6a28Christian Maeder <section id="conditional">
a1a48072301767054f2a9ff7ccf8974b0d6a6a28Christian Maeder <title>リクエスト毎に条件に基づいて設定する</title>
a1a48072301767054f2a9ff7ccf8974b0d6a6a28Christian Maeder
a1a48072301767054f2a9ff7ccf8974b0d6a6a28Christian Maeder <p>より柔軟性を高めるために、mod_setenvif
a1a48072301767054f2a9ff7ccf8974b0d6a6a28Christian Maeder で提供されているディレクティブを使用することで、リクエストの
a1a48072301767054f2a9ff7ccf8974b0d6a6a28Christian Maeder 特性に基づいて環境変数を設定することができます。例えば、特定のブラウザ
a1a48072301767054f2a9ff7ccf8974b0d6a6a28Christian Maeder (User-Agent) のリクエストや特定の Referer [意図的な綴りです]
a1a48072301767054f2a9ff7ccf8974b0d6a6a28Christian Maeder <transnote>正しい綴りは referrer ですが、HTTP の仕様では Referer
a1a48072301767054f2a9ff7ccf8974b0d6a6a28Christian Maeder となっています</transnote>ヘッダが見つかったときのみ変数を設定することができます。
38824a7dba4f7d82532afec67e0b594a5af5d76bChristian Maeder mod_rewrite の <directive module="mod_rewrite">RewriteRule</directive>
a1a48072301767054f2a9ff7ccf8974b0d6a6a28Christian Maeder ディレクティブにおいて環境変数を設定する <code>[E=...]</code>
a1a48072301767054f2a9ff7ccf8974b0d6a6a28Christian Maeder オプションを使用することで、
a1a48072301767054f2a9ff7ccf8974b0d6a6a28Christian Maeder より柔軟な設定を行なうことができます。</p>
38824a7dba4f7d82532afec67e0b594a5af5d76bChristian Maeder
a1a48072301767054f2a9ff7ccf8974b0d6a6a28Christian Maeder </section>
a1a48072301767054f2a9ff7ccf8974b0d6a6a28Christian Maeder <section id="unique-identifiers">
38824a7dba4f7d82532afec67e0b594a5af5d76bChristian Maeder <title>一意な識別子</title>
a1a48072301767054f2a9ff7ccf8974b0d6a6a28Christian Maeder
a1a48072301767054f2a9ff7ccf8974b0d6a6a28Christian Maeder <p>mod_unique_id は、非常に限られた条件の下で
a1a48072301767054f2a9ff7ccf8974b0d6a6a28Christian Maeder 「すべて」のリクエストについて、一意であることが保証されている値を環境変数
a1a48072301767054f2a9ff7ccf8974b0d6a6a28Christian Maeder <code>UNIQUE_ID</code> に設定します。</p>
e7b0b439ffae08514ac1afc62186d9a87ec6bd59Christian Maeder
bb2c1beb7ab66a49627a2a34df80864a3c65cc83Christian Maeder </section>
bb2c1beb7ab66a49627a2a34df80864a3c65cc83Christian Maeder <section id="standard-cgi">
bb2c1beb7ab66a49627a2a34df80864a3c65cc83Christian Maeder <title>標準 CGI 変数</title>
bb2c1beb7ab66a49627a2a34df80864a3c65cc83Christian Maeder
bb2c1beb7ab66a49627a2a34df80864a3c65cc83Christian Maeder <p>Apache の設定ファイルで設定された環境変数とシェルから渡される
bb2c1beb7ab66a49627a2a34df80864a3c65cc83Christian Maeder 環境変数に加えて、CGI スクリプトと SSI ページには <a
bb2c1beb7ab66a49627a2a34df80864a3c65cc83Christian Maeder href="http://cgi-spec.golux.com">CGI の仕様</a>で要求されている、
a1a48072301767054f2a9ff7ccf8974b0d6a6a28Christian Maeder リクエストのメタ情報を持った環境変数の組が提供されます。</p>
a1a48072301767054f2a9ff7ccf8974b0d6a6a28Christian Maeder
a1a48072301767054f2a9ff7ccf8974b0d6a6a28Christian Maeder </section>
38824a7dba4f7d82532afec67e0b594a5af5d76bChristian Maeder <section id="caveats">
bb2c1beb7ab66a49627a2a34df80864a3c65cc83Christian Maeder <title>いくつかの注意</title>
bb2c1beb7ab66a49627a2a34df80864a3c65cc83Christian Maeder
bb2c1beb7ab66a49627a2a34df80864a3c65cc83Christian Maeder <ul>
5b3e0bbb6a776c60dc14113435a44e7b13d2fa01Christian Maeder <li>環境を操作するディレクティブを使って標準 CGI
d4aed7a2eea6b546c0d9520d85038addb7beb12fChristian Maeder 変数を上書きしたり変更したりすることはできません。</li>
d4aed7a2eea6b546c0d9520d85038addb7beb12fChristian Maeder
d4aed7a2eea6b546c0d9520d85038addb7beb12fChristian Maeder <li>CGI スクリプトを起動するために <program>suexec</program>
d4aed7a2eea6b546c0d9520d85038addb7beb12fChristian Maeder が使用されている場合、CGI スクリプトが起動するために、環境変数は<em
d4aed7a2eea6b546c0d9520d85038addb7beb12fChristian Maeder >安全</em>な環境変数の組に整理されます。
d4aed7a2eea6b546c0d9520d85038addb7beb12fChristian Maeder この安全な環境変数の集合は、コンパイル時に <code>suexec.c</code>
d4aed7a2eea6b546c0d9520d85038addb7beb12fChristian Maeder で定義されます。</li>
a1a48072301767054f2a9ff7ccf8974b0d6a6a28Christian Maeder
5b3e0bbb6a776c60dc14113435a44e7b13d2fa01Christian Maeder <li>移植性のために、環境変数の名前はアルファベット、
38824a7dba4f7d82532afec67e0b594a5af5d76bChristian Maeder 数字とアンダースコア <transnote>'_'</transnote> だけから成ります。
38824a7dba4f7d82532afec67e0b594a5af5d76bChristian Maeder さらに、最初の文字は数字であってはいけません。
a1a48072301767054f2a9ff7ccf8974b0d6a6a28Christian Maeder この制限に合わない文字は CGI スクリプトと SSI
a1a48072301767054f2a9ff7ccf8974b0d6a6a28Christian Maeder ページに渡されるときにアンダースコアに置換されます。</li>
e7b0b439ffae08514ac1afc62186d9a87ec6bd59Christian Maeder
a1a48072301767054f2a9ff7ccf8974b0d6a6a28Christian Maeder <li><directive module="mod_env">SetEnv</directive> はリクエスト処理の
bb2c1beb7ab66a49627a2a34df80864a3c65cc83Christian Maeder 段階の中でも遅くに実行されます。つまり
bb2c1beb7ab66a49627a2a34df80864a3c65cc83Christian Maeder <directive module="mod_setenvif">SetEnvIf</directive> や
bb2c1beb7ab66a49627a2a34df80864a3c65cc83Christian Maeder <directive module="mod_rewrite">RewriteCond</directive>
bb2c1beb7ab66a49627a2a34df80864a3c65cc83Christian Maeder などからは、変数がそこで設定されていることがわかりません。</li>
bb2c1beb7ab66a49627a2a34df80864a3c65cc83Christian Maeder </ul>
bb2c1beb7ab66a49627a2a34df80864a3c65cc83Christian Maeder </section>
bb2c1beb7ab66a49627a2a34df80864a3c65cc83Christian Maeder </section>
bb2c1beb7ab66a49627a2a34df80864a3c65cc83Christian Maeder <section id="using">
5b3e0bbb6a776c60dc14113435a44e7b13d2fa01Christian Maeder <title>環境変数の使用</title>
5b3e0bbb6a776c60dc14113435a44e7b13d2fa01Christian Maeder
5b3e0bbb6a776c60dc14113435a44e7b13d2fa01Christian Maeder <related>
5b3e0bbb6a776c60dc14113435a44e7b13d2fa01Christian Maeder <modulelist>
5b3e0bbb6a776c60dc14113435a44e7b13d2fa01Christian Maeder <module>mod_authz_host</module>
5b3e0bbb6a776c60dc14113435a44e7b13d2fa01Christian Maeder <module>mod_cgi</module>
5b3e0bbb6a776c60dc14113435a44e7b13d2fa01Christian Maeder <module>mod_ext_filter</module>
5b3e0bbb6a776c60dc14113435a44e7b13d2fa01Christian Maeder <module>mod_headers</module>
5b3e0bbb6a776c60dc14113435a44e7b13d2fa01Christian Maeder <module>mod_include</module>
a1a48072301767054f2a9ff7ccf8974b0d6a6a28Christian Maeder <module>mod_log_config</module>
0c92a39a4adf3c1cbe173e3b16c65c159a1ce612Christian Maeder <module>mod_rewrite</module>
7fe976d9f9c4af1aa7636c568d9919859523de0aChristian Maeder </modulelist>
7fe976d9f9c4af1aa7636c568d9919859523de0aChristian Maeder <directivelist>
0c92a39a4adf3c1cbe173e3b16c65c159a1ce612Christian Maeder <directive module="mod_authz_host">Allow</directive>
0c92a39a4adf3c1cbe173e3b16c65c159a1ce612Christian Maeder <directive module="mod_log_config">CustomLog</directive>
0c92a39a4adf3c1cbe173e3b16c65c159a1ce612Christian Maeder <directive module="mod_authz_host">Deny</directive>
0c92a39a4adf3c1cbe173e3b16c65c159a1ce612Christian Maeder <directive module="mod_ext_filter">ExtFilterDefine</directive>
0c92a39a4adf3c1cbe173e3b16c65c159a1ce612Christian Maeder <directive module="mod_headers">Header</directive>
0c92a39a4adf3c1cbe173e3b16c65c159a1ce612Christian Maeder <directive module="mod_log_config">LogFormat</directive>
0c92a39a4adf3c1cbe173e3b16c65c159a1ce612Christian Maeder <directive module="mod_rewrite">RewriteCond</directive>
0c92a39a4adf3c1cbe173e3b16c65c159a1ce612Christian Maeder <directive module="mod_rewrite">RewriteRule</directive>
0c92a39a4adf3c1cbe173e3b16c65c159a1ce612Christian Maeder </directivelist>
0c92a39a4adf3c1cbe173e3b16c65c159a1ce612Christian Maeder </related>
0c92a39a4adf3c1cbe173e3b16c65c159a1ce612Christian Maeder
0c92a39a4adf3c1cbe173e3b16c65c159a1ce612Christian Maeder <section id="cgi-scripts">
0c92a39a4adf3c1cbe173e3b16c65c159a1ce612Christian Maeder <title>CGI スクリプト</title>
<p>環境変数の主な利用法の一つは、CGI スクリプトに情報を伝えることです。
上で説明されているように、CGI スクリプトに渡される環境変数は Apache
の設定により設定される変数に加えて、リクエストの標準のメタ情報を含んでいます。
詳細は <a href="howto/cgi.html">CGI チュートリアル</a>
を参照してください。</p>
</section>
<section id="ssi-pages">
<title>SSI ページ</title>
<p>mod_include の <code>INCLUDES</code> フィルタで処理される
server-parsed (SSI) ドキュメントでは、<code>echo</code>
要素を使用すると環境変数が出力されます。
また、ページのある部分がリクエストの性質に応じて変更されるように、
環境変数をフロー制御要素で使うことができます。詳細は
<a href="howto/ssi.html">SSI チュートリアル</a> を参照してください。</p>
</section>
<section id="access-control">
<title>アクセス制御</title>
<p><code>allow from env=</code> ディレクティブと <code>deny from env=</code>
ディレクティブを使用して、サーバへのアクセスを環境変数の値で制御することができます。
<directive module="mod_setenvif">SetEnvIf</directive>
ディレクティブと組み合わせることで、クライアントの特性に基づいて
サーバへのアクセス制御を柔軟に行なうことができるようになります。
たとえば、これらのディレクティブを使用して、特定のブラウザ (User-Agent)
からのアクセスを拒否することができます。</p>
</section>
<section id="logging">
<title>条件付きログ記録</title>
<p><directive module="mod_log_config">LogFormat</directive>
ディレクティブのオプション <code>%e</code>
を使用することで、環境変数をアクセスログに記録することができます。さらに、
<directive module="mod_log_config">CustomLog</directive>
ディレクティブの条件分岐式を使用することで、
環境変数の値によってリクエストをログに記録するかどうかを決めることができます。
<directive module="mod_setenvif">SetEnvIf</directive>
ディレクティブと組み合わせることで、
どのリクエストをログに記録するかを柔軟に制御することが可能になります。たとえば、
<code>gif</code> で終わるファイル名へのリクエストはログに記録しない、
違うサブネットのクライアントからのリクエストだけをログに記録する、
という選択が可能です。</p>
</section>
<section id="response-headers">
<title>条件付き応答ヘッダ</title>
<p><directive module="mod_headers">Header</directive>
ディレクティブは環境変数の存在や不在によってクライアントへの応答に特定の
HTTP ヘッダを付けるかどうかを決めることができます。
これにより、たとえば、クライアントからのリクエスト
にあるヘッダがある場合にのみ特定の応答ヘッダを送る、というようなことが
できます。</p>
</section>
<section id="external-filter">
<title>外部フィルタの適用</title>
<p><directive module="mod_ext_filter">ExtFilterDefine</directive>
ディレクティブを使用して
<module>mod_ext_filter</module> で設定される外部フィルタは、
<code>disableenv=</code> と <code>enableenv=</code>
オプションを使って、環境変数による条件付き適用ができます。</p>
</section>
<section id="url-rewriting">
<title>URL の書き換え</title>
<p><directive module="mod_rewrite">RewriteCond</directive>
ディレクティブで<em>評価文字列</em>として
<code>%{ENV:...}</code> 式を指定することで、mod_rewrite
の書き換えエンジンが環境変数に基いて条件分岐を行なうことができます。
mod_rewrite が使用可能な変数で <code>ENV:</code> が前についていない変数は、
実際は環境変数ではないということに注意してください。
それらは他のモジュールからは使用できない mod_rewrite 用の特別な変数です。
</p>
</section>
</section>
<section id="special">
<title>特別な目的の環境変数</title>
<p>互換性の問題を解決するために、特定のクライアントと通信しているときは
Apache の動作を変更できる機構が導入されました。できるだけ柔軟にするために、
これらの機構は環境変数を定義することで呼び出されます。普通は、
<directive module="mod_setenvif">BrowserMatch</directive>
ディレクティブを使いますが、たとえば <directive module="mod_env"
>SetEnv</directive> ディレクティブや <directive module="mod_env"
>PassEnv</directive> ディレクティブも使用することができます。</p>
<section id="downgrade">
<title>downgrade-1.0</title>
<p>これを指定することで、リクエストが HTTP/1.0
より新しいプロトコルの場合でも、HTTP/1.0 として扱われます。</p>
</section>
<section id="force-gzip">
<title>force-gzip</title>
<p><code>DEFLATE</code> フィルタが使用するように設定されているときに、
この環境変数はブラウザの accept-encoding の設定を無視して常に
圧縮された出力を送るようにします。</p>
</section>
<section id="force-no-vary">
<title>force-no-vary</title>
<p>応答ヘッダがクライアントに送られる前に <code>Vary</code>
フィールドを取り除きます。
クライアントの中にはこのフィールドを正しく解釈しないものがあります。
この変数を設定することでその問題を回避することができます。
この変数を設定すると、<strong>force-response-1.0</strong>
が設定されたことになります。</p>
</section>
<section id="force-response">
<title>force-response-1.0</title>
<p>これが設定されていると、HTTP/1.0 リクエストを発行するクライアントに対しては
常に HTTP/1.0 で応答するようになります。この機能は、
元々は AOL のプロキシの問題のために実装されました。HTTP/1.0 クライアントの中には、
HTTP/1.1 の応答を返されると正しく動作しないものがあるかもしれません。
この機能を使用することで、そのようなクライアントとの間の互換性問題を解決できます。</p>
</section>
<section id="gzip-only-text-html">
<title>gzip-only-text/html</title>
<p>これが 1 に設定されると、この変数は <code>text/html</code>
以外のコンテントタイプに対する、<module>mod_deflate</module>
提供の <code>DEFLATE</code> 出力フィルタを無効にします。
また、静的に、既に圧縮されたファイルを使用したい場合、
(gzip だけでなく、"identity" と異なる全てのエンコードに対して)
<module>mod_negotiation</module> も変数を評価します。</p>
</section>
<section id="no-gzip"><title>no-gzip</title>
<p>セットされると、<module>mod_deflate</module> の
<code>DEFLATE</code> フィルタがオフになります。
そして <module>mod_negotiation</module>
はエンコードされたリソースを送らないようにします。</p>
</section>
<section id="nokeepalive">
<title>nokeepalive</title>
<p>これが設定されている場合は、<directive module="core"
>KeepAlive</directive> を使用しないようにします。</p>
<section id="prefer-language"><title>prefer-language</title>
<p><module>mod_negotiation</module> の挙動に影響を与えます。
(<code>en</code>, <code>ja</code>, <code>x-klingon</code>といった)
言語タグが格納されていれば、その言語の variant を送信しようとします。
そのような variant がない場合は、
通常の<a href="content-negotiation.html">ネゴシエーション</a>処理が
適用されます。</p>
</section>
</section>
<section id="redirect-carefully">
<title>redirect-carefully</title>
<p>これはクライアントへのリダイレクトの送信をサーバがより注意深く
行なうようにします。
これは通常、リダイレクトに際してクライアントに
問題があることが分かっている場合に使われます。この機能は元々は
マイクロソフトのウェブフォルダのソフトが DAV
メソッドによるディレクトリのリソースへのリダイレクトの扱いに
問題がり、それを回避するために実装されました。</p>
</section>
<section id="suppress-error-charset">
<title>suppress-error-charset</title>
<p><em>Apache 2.2 以降で利用可能</em></p>
<p>クライアントのリクエストに対する応答としてリダイレクトを送信する際、
レスポンスにはリダイレクトが自動的に行なえない (行なわれない)
場合に表示するテキストが含まれます。
通常、このテキストに合致したキャラクタセット、ISO-8859-1
でラベル付けをします。</p>
<p>しかし、リダイレクト先が別の文字セットを使っている場合、
ある問題のあるブラウザのバージョンでは、
リダイレクト先の実際の文字セットの代わりに、
リダイレクト元の文字セットを使ってしまうことがあります。
その結果、例えば変な描画が行なわれたりして、読めなくなったりします。</p>
<p>この環境変数を設定することで、リダイレクションテキストに対する
キャラクタセットの指定を除去しますので、それら問題のあるブラウザでも
リダイレクト先の文字セットを正しく使うようにできます。</p>
<note type="warning">
<title>セキュリティ</title>
<p>文字セットを指定せずにエラーページを送信すると、
クロスサイトスクリプティング <transnote>XSS</transnote>
攻撃の危険性がでてきます。
HTTP/1.1 仕様に準拠していなくて、コンテンツの中身から文字セットを
"推測" しようとするブラウザ (MSIE) が実際にあるからです。
そのようなブラウザは UTF-7 文字セットを使って簡単に騙すことができます。
クロスサイトスクリプティング攻撃を防ぐために実装されている
通常のエスケープ機構が、入力データ中にある UTF-7 で
エンコードされたコンテンツ (リクエスト URI など) には
うまく動作しないからです。</p>
</note>
</section>
<section id="proxy"><title>force-proxy-request-1.0, proxy-nokeepalive, proxy-sendchunked, proxy-sendcl</title>
<p>これらの指示子は <module>mod_proxy</module> の挙動を変更します。
詳細は <module>mod_proxy</module> のドキュメントをご参照ください。</p>
</section>
</section>
<section id="examples">
<title>例</title>
<section id="misbehaving">
<title>おかしな挙動をするクライアントに対してプロトコルの動作を変更する</title>
<p>クライアントに関する既知の問題に対処するために、以下の行を
httpd.conf に入れることを推奨しています。</p>
<p>古いバージョンの Apache では、クライアントの問題に対応するために
httpd.conf に次の行を加えるよう推奨されていましたが、
今となっては、問題としていたクライアントは実際には見かけることは
なくなってきたので、この設定はもはや必要ないかもしれません。</p>
<example><pre>
#
# The following directives modify normal HTTP response behavior.
# The first directive disables keepalive for Netscape 2.x and browsers that
# spoof it. There are known problems with these browser implementations.
# The second directive is for Microsoft Internet Explorer 4.0b2
# which has a broken HTTP/1.1 implementation and does not properly
# support keepalive when it is used on 301 or 302 (redirect) responses.
#
BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
#
# The following directive disables HTTP/1.1 responses to browsers which
# are in violation of the HTTP/1.0 spec by not being able to grok a
# basic 1.1 response.
#
BrowserMatch "RealPlayer 4\.0" force-response-1.0
BrowserMatch "Java/1\.0" force-response-1.0
BrowserMatch "JDK/1\.0" force-response-1.0</pre></example>
</section>
<section id="no-img-log">
<title>画像へのリクエストをアクセスログに記録しない</title>
<p>この例では、画像へのリクエストがアクセスログに現れないようにします。
これを変更することで、特定のディレクトリのログ収集をやめたり、
特定のホストからのリクエストのログ収集をやめたりすることが簡単にできます。
</p>
<example><pre>
SetEnvIf Request_URI \.gif image-request
SetEnvIf Request_URI \.jpg image-request
SetEnvIf Request_URI \.png image-request
CustomLog logs/access_log common env=!image-request</pre></example>
</section>
<section id="image-theft">
<title>「画像の盗用」を防ぐ</title>
<p>この例は、別のサーバにいる人が、あなたのサーバにある画像を
inline 画像として使用することを防ぎます。
これは推奨されている設定ではありませんが、ある限定された状況では有効です。
ここでは、すべての画像は <code>/web/images</code>
というディレクトリにあると仮定します。</p>
<example><pre>
SetEnvIf Referer "^http://www\.example\.com/" local_referal
# Allow browsers that do not send Referer info
SetEnvIf Referer "^$" local_referal
&lt;Directory /web/images&gt;
Order Deny,Allow
Deny from all
Allow from env=local_referal
&lt;/Directory&gt;</pre></example>
<p>この手法に関する詳しい情報は ServerWatch にあるチュートリアル
「<a href="http://www.serverwatch.com/tutorials/article.php/1132731"
>Keeping Your Images from Adorning Other Sites</a>
」を参照してください。</p>
</section>
</section>
</manualpage>