env.html.ja.utf8 revision c7ed811e89712261aaa4432198e331389044e1f8
dafcb997e390efa4423883dafd100c975c4095d6Mark Andrews<?xml version="1.0" encoding="UTF-8"?>
dafcb997e390efa4423883dafd100c975c4095d6Mark Andrews<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
40f53fa8d9c6a4fc38c0014495e7a42b08f52481David Lawrence<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja"><head><!--
4c1132f34493327abc632196f5876a89aa573687Bob Halley XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
4c1132f34493327abc632196f5876a89aa573687Bob Halley This file is generated from xml source: DO NOT EDIT
4c1132f34493327abc632196f5876a89aa573687Bob Halley XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
40f53fa8d9c6a4fc38c0014495e7a42b08f52481David Lawrence -->
dafcb997e390efa4423883dafd100c975c4095d6Mark Andrews<title>Apache の環境変数 - Apache HTTP サーバ</title>
dafcb997e390efa4423883dafd100c975c4095d6Mark Andrews<link href="/style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
dafcb997e390efa4423883dafd100c975c4095d6Mark Andrews<link href="/style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
dafcb997e390efa4423883dafd100c975c4095d6Mark Andrews<link href="/style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />
dafcb997e390efa4423883dafd100c975c4095d6Mark Andrews<link href="/images/favicon.ico" rel="shortcut icon" /></head>
dafcb997e390efa4423883dafd100c975c4095d6Mark Andrews<body id="manual-page"><div id="page-header">
dafcb997e390efa4423883dafd100c975c4095d6Mark Andrews<p class="menu"><a href="/mod/">モジュール</a> | <a href="/mod/directives.html">ディレクティブ</a> | <a href="/faq/">FAQ</a> | <a href="/glossary.html">用語</a> | <a href="/sitemap.html">サイトマップ</a></p>
dafcb997e390efa4423883dafd100c975c4095d6Mark Andrews<p class="apache">Apache HTTP サーバ バージョン 2.3</p>
9f7d51ee3290e2a064d71016a6bd555b47134a7cMark Andrews<img alt="" src="/images/feather.gif" /></div>
9c3531d72aeaad6c5f01efe6a1c82023e1379e4dDavid Lawrence<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="/images/left.gif" /></a></div>
f41f183f628a148860a6d1f0070208cddd45b0c6Bob Halley<div id="path">
f41f183f628a148860a6d1f0070208cddd45b0c6Bob Halley<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP サーバ</a> &gt; <a href="http://httpd.apache.org/docs/">ドキュメンテーション</a> &gt; <a href="./">バージョン
f41f183f628a148860a6d1f0070208cddd45b0c6Bob Halley 2.3</a></div><div id="page-content"><div id="preamble"><h1>Apache の環境変数</h1>
f41f183f628a148860a6d1f0070208cddd45b0c6Bob Halley<div class="toplang">
9a2127f8335bad323451d7825119cd9f72e32464Mark Andrews<p><span>言語: </span><a href="/en/env.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
9a2127f8335bad323451d7825119cd9f72e32464Mark Andrews<a href="/fr/env.html" hreflang="fr" rel="alternate" title="Français">&nbsp;fr&nbsp;</a> |
9a2127f8335bad323451d7825119cd9f72e32464Mark Andrews<a href="/ja/env.html" title="Japanese">&nbsp;ja&nbsp;</a> |
9a2127f8335bad323451d7825119cd9f72e32464Mark Andrews<a href="/ko/env.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
a5d43b72413db3edd6b36a58f9bdf2cf6ff692f2Bob Halley<a href="/tr/env.html" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>
a5d43b72413db3edd6b36a58f9bdf2cf6ff692f2Bob Halley</div>
64e41159a919b0711321fe688ca5da4f4d1b7d80Bob Halley
64e41159a919b0711321fe688ca5da4f4d1b7d80Bob Halley <p>Apache HTTP サーバは<em>環境変数</em>と呼ばれる、名前のついた
c2bc56dc65b4b103a5600565680eb5f33fa4c90bMark Andrews 変数に情報を記憶する仕組みを提供しています。この情報はログ収集や
51917258dbb23cfe6069ae1cf2b7fc5aefc1e0c2Bob Halley アクセス制御などのいろいろな操作を制御するために使うことができます。
51917258dbb23cfe6069ae1cf2b7fc5aefc1e0c2Bob Halley これらの変数は CGI スクリプトなどの外部プログラムと通信するためにも
6d5dcd0dc9bdbd679282b1ffc47987d24c3a1346Bob Halley 使われます。この文書はそれらの変数の操作方法と使用方法をいくつか
a5d43b72413db3edd6b36a58f9bdf2cf6ff692f2Bob Halley 紹介します。</p>
a5d43b72413db3edd6b36a58f9bdf2cf6ff692f2Bob Halley
a5d43b72413db3edd6b36a58f9bdf2cf6ff692f2Bob Halley <p>これらの変数は<em>環境変数</em>と呼ばれていますが、オペレーティング
b6d52ee5bea1b9d9074698e693b49ce96edff47bMark Andrews システムによって制御されている環境変数と同じではありません。
b6d52ee5bea1b9d9074698e693b49ce96edff47bMark Andrews 実際は、これらの変数は Apache の内部構造の中に記憶され、操作されています。
b6d52ee5bea1b9d9074698e693b49ce96edff47bMark Andrews それらは、CGI や SSI スクリプトに渡されたときだけ、実際の
b6d52ee5bea1b9d9074698e693b49ce96edff47bMark Andrews オペレーティングシステムの環境変数になります。サーバ自身が
c45abd11bb68005d8a5c56c14b16f4184c3e057dMichael Graff 実行されているオペレーティングシステムの環境を操作したい場合は、
c45abd11bb68005d8a5c56c14b16f4184c3e057dMichael Graff オペレーティングシステムのシェルが提供している標準の環境変数の
a685d9c3b608eb768d237f20e8e8b1c5d3902146David Lawrence 操作方法を使わなければなりません。</p>
feb08cecf318bba330437cfcb725f48d999804d8James Brister </div>
81aea2f2d3eac0515eb29449977ad50752f42a39Mark Andrews<div id="quickview"><ul id="toc"><li><img alt="" src="/images/down.gif" /> <a href="#setting">環境変数の設定</a></li>
81aea2f2d3eac0515eb29449977ad50752f42a39Mark Andrews<li><img alt="" src="/images/down.gif" /> <a href="#using">環境変数の使用</a></li>
81aea2f2d3eac0515eb29449977ad50752f42a39Mark Andrews<li><img alt="" src="/images/down.gif" /> <a href="#special">特別な目的の環境変数</a></li>
81aea2f2d3eac0515eb29449977ad50752f42a39Mark Andrews<li><img alt="" src="/images/down.gif" /> <a href="#examples">例</a></li>
81aea2f2d3eac0515eb29449977ad50752f42a39Mark Andrews</ul></div>
81aea2f2d3eac0515eb29449977ad50752f42a39Mark Andrews<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
81aea2f2d3eac0515eb29449977ad50752f42a39Mark Andrews<div class="section">
65c4736d9c0ebc6d9b1d991593b55566909da9cdBrian Wellington<h2><a name="setting" id="setting">環境変数の設定</a></h2>
fc80027fb54b501cdd88461bf879d078259e0226David Lawrence
5c6762838c9e423753723ec2a963164e3d66ac32Mark Andrews <table class="related"><tr><th>関連モジュール</th><th>関連ディレクティブ</th></tr><tr><td><ul><li><code class="module"><a href="/mod/mod_env.html">mod_env</a></code></li><li><code class="module"><a href="/mod/mod_rewrite.html">mod_rewrite</a></code></li><li><code class="module"><a href="/mod/mod_setenvif.html">mod_setenvif</a></code></li><li><code class="module"><a href="/mod/mod_unique_id.html">mod_unique_id</a></code></li></ul></td><td><ul><li><code class="directive"><a href="/mod/mod_setenvif.html#browsermatch">BrowserMatch</a></code></li><li><code class="directive"><a href="/mod/mod_setenvif.html#browsermatchnocase">BrowserMatchNoCase</a></code></li><li><code class="directive"><a href="/mod/mod_env.html#passenv">PassEnv</a></code></li><li><code class="directive"><a href="/mod/mod_rewrite.html#rewriterule">RewriteRule</a></code></li><li><code class="directive"><a href="/mod/mod_env.html#setenv">SetEnv</a></code></li><li><code class="directive"><a href="/mod/mod_setenvif.html#setenvif">SetEnvIf</a></code></li><li><code class="directive"><a href="/mod/mod_setenvif.html#setenvifnocase">SetEnvIfNoCase</a></code></li><li><code class="directive"><a href="/mod/mod_env.html#unsetenv">UnsetEnv</a></code></li></ul></td></tr></table>
6017f424ee3c02d7f22132c77576ea38542fa949Andreas Gustafsson
911ed0d3bee586b3bec42cb6c376d5cc6c0e1e24Brian Wellington <h3><a name="basic-manipulation" id="basic-manipulation">基本的な環境の操作</a></h3>
0b09763c354ec91fb352b6b4cea383bd0195b2d8Mark Andrews
911ed0d3bee586b3bec42cb6c376d5cc6c0e1e24Brian Wellington
911ed0d3bee586b3bec42cb6c376d5cc6c0e1e24Brian Wellington <p>Apache において環境変数を設定する一番基本的な方法は、
93d6dfaf66258337985427c86181f01fc51f0bb4Mark Andrews 無条件に環境変数を設定する <code class="directive"><a href="/mod/mod_env.html#setenv">SetEnv</a></code> ディレクティブを使用することです。
28b863e609ff2d97b78663b46894494cfa2ea411Mark Andrews <code class="directive"><a href="/mod/mod_env.html#passenv">PassEnv</a></code>
28b863e609ff2d97b78663b46894494cfa2ea411Mark Andrews ディレクティブにより、Apache が起動されたシェルの
3cd88f71b01833d5c2474638854dfa5c4244a22aBrian Wellington 環境変数を渡すこともできます。</p>
e7a4f58d55042cbc981a70b5071aaea46b9ebf7fAndreas Gustafsson
ce1f5b8d0ae5936fd187c1f414ff12a7e3b0aa37Andreas Gustafsson
850d70818503ca1b0f98c9c70b16b51e789fd705Andreas Gustafsson <h3><a name="conditional" id="conditional">リクエスト毎に条件に基づいて設定する</a></h3>
5c6762838c9e423753723ec2a963164e3d66ac32Mark Andrews
5c6762838c9e423753723ec2a963164e3d66ac32Mark Andrews
5c6762838c9e423753723ec2a963164e3d66ac32Mark Andrews <p>より柔軟性を高めるために、mod_setenvif
a5d43b72413db3edd6b36a58f9bdf2cf6ff692f2Bob Halley で提供されているディレクティブを使用することで、リクエストの
fc80027fb54b501cdd88461bf879d078259e0226David Lawrence 特性に基づいて環境変数を設定することができます。例えば、特定のブラウザ
49a940dc68b30d9e4f9e1bd3c0503d8b90bb1726Mark Andrews (User-Agent) のリクエストや特定の Referer [意図的な綴りです]
6017f424ee3c02d7f22132c77576ea38542fa949Andreas Gustafsson <span class="transnote">(<em>訳注:</em> 正しい綴りは referrer ですが、HTTP の仕様では Referer
911ed0d3bee586b3bec42cb6c376d5cc6c0e1e24Brian Wellington となっています)</span>ヘッダが見つかったときのみ変数を設定することができます。
0b09763c354ec91fb352b6b4cea383bd0195b2d8Mark Andrews mod_rewrite の <code class="directive"><a href="/mod/mod_rewrite.html#rewriterule">RewriteRule</a></code>
911ed0d3bee586b3bec42cb6c376d5cc6c0e1e24Brian Wellington ディレクティブにおいて環境変数を設定する <code>[E=...]</code>
911ed0d3bee586b3bec42cb6c376d5cc6c0e1e24Brian Wellington オプションを使用することで、
93d6dfaf66258337985427c86181f01fc51f0bb4Mark Andrews より柔軟な設定を行なうことができます。</p>
28b863e609ff2d97b78663b46894494cfa2ea411Mark Andrews
28b863e609ff2d97b78663b46894494cfa2ea411Mark Andrews
3cd88f71b01833d5c2474638854dfa5c4244a22aBrian Wellington <h3><a name="unique-identifiers" id="unique-identifiers">一意な識別子</a></h3>
e7a4f58d55042cbc981a70b5071aaea46b9ebf7fAndreas Gustafsson
ce1f5b8d0ae5936fd187c1f414ff12a7e3b0aa37Andreas Gustafsson
850d70818503ca1b0f98c9c70b16b51e789fd705Andreas Gustafsson <p>mod_unique_id は、非常に限られた条件の下で
18d110413cf6416eb339c169b99159d09f690da1Brian Wellington 「すべて」のリクエストについて、一意であることが保証されている値を環境変数
4fd3e3482c7e4ce01e2cf28f13e0152c8e50d746Mark Andrews <code>UNIQUE_ID</code> に設定します。</p>
438b80a31b2d58b99970914f50d0a84bf9f832a5Brian Wellington
4fd3e3482c7e4ce01e2cf28f13e0152c8e50d746Mark Andrews
4fd3e3482c7e4ce01e2cf28f13e0152c8e50d746Mark Andrews <h3><a name="standard-cgi" id="standard-cgi">標準 CGI 変数</a></h3>
a5d43b72413db3edd6b36a58f9bdf2cf6ff692f2Bob Halley
d2b5fe92a4755ce67f2dd6050955782b4fd6b3f3Mark Andrews
d2b5fe92a4755ce67f2dd6050955782b4fd6b3f3Mark Andrews <p>Apache の設定ファイルで設定された環境変数とシェルから渡される
d2b5fe92a4755ce67f2dd6050955782b4fd6b3f3Mark Andrews 環境変数に加えて、CGI スクリプトと SSI ページには <a href="http://cgi-spec.golux.com">CGI の仕様</a>で要求されている、
a5d43b72413db3edd6b36a58f9bdf2cf6ff692f2Bob Halley リクエストのメタ情報を持った環境変数の組が提供されます。</p>
a5d43b72413db3edd6b36a58f9bdf2cf6ff692f2Bob Halley
64e41159a919b0711321fe688ca5da4f4d1b7d80Bob Halley
74cb99072c4b0ebd2ccafcfa284288fa760f7a1aMark Andrews <h3><a name="caveats" id="caveats">いくつかの注意</a></h3>
64e41159a919b0711321fe688ca5da4f4d1b7d80Bob Halley
64e41159a919b0711321fe688ca5da4f4d1b7d80Bob Halley
64e41159a919b0711321fe688ca5da4f4d1b7d80Bob Halley <ul>
64e41159a919b0711321fe688ca5da4f4d1b7d80Bob Halley <li>環境を操作するディレクティブを使って標準 CGI
139154bd9894495042f4e748f554e9c8b98b7598Bob Halley 変数を上書きしたり変更したりすることはできません。</li>
a5d43b72413db3edd6b36a58f9bdf2cf6ff692f2Bob Halley
193738b819e3c699f9edd18864a6810fcfcec855Andreas Gustafsson <li>CGI スクリプトを起動するために <code class="program"><a href="/programs/suexec.html">suexec</a></code>
fd35453765c6494d077edca44f4d998af5fd4cfaDavid Lawrence が使用されている場合、CGI スクリプトが起動するために、環境変数は<em>安全</em>な環境変数の組に整理されます。
fd35453765c6494d077edca44f4d998af5fd4cfaDavid Lawrence この安全な環境変数の集合は、コンパイル時に <code>suexec.c</code>
64e41159a919b0711321fe688ca5da4f4d1b7d80Bob Halley で定義されます。</li>
64e41159a919b0711321fe688ca5da4f4d1b7d80Bob Halley
74cb99072c4b0ebd2ccafcfa284288fa760f7a1aMark Andrews <li>移植性のために、環境変数の名前はアルファベット、
9f7d51ee3290e2a064d71016a6bd555b47134a7cMark Andrews 数字とアンダースコア <span class="transnote">(<em>訳注:</em> '_')</span> だけから成ります。
64e41159a919b0711321fe688ca5da4f4d1b7d80Bob Halley さらに、最初の文字は数字であってはいけません。
881702c9c0079cd48a45054fd90d043f3a8b7e11Mark Andrews この制限に合わない文字は CGI スクリプトと SSI
64e41159a919b0711321fe688ca5da4f4d1b7d80Bob Halley ページに渡されるときにアンダースコアに置換されます。</li>
64e41159a919b0711321fe688ca5da4f4d1b7d80Bob Halley
a5d43b72413db3edd6b36a58f9bdf2cf6ff692f2Bob Halley <li><code class="directive"><a href="/mod/mod_env.html#setenv">SetEnv</a></code> はリクエスト処理の
a5d43b72413db3edd6b36a58f9bdf2cf6ff692f2Bob Halley 段階の中でも遅くに実行されます。つまり
a5d43b72413db3edd6b36a58f9bdf2cf6ff692f2Bob Halley <code class="directive"><a href="/mod/mod_setenvif.html#setenvif">SetEnvIf</a></code> や
922e6a3c2ac4ef900dd9dc99f0cc137f18372583Andreas Gustafsson <code class="directive"><a href="/mod/mod_rewrite.html#rewritecond">RewriteCond</a></code>
a5d43b72413db3edd6b36a58f9bdf2cf6ff692f2Bob Halley などからは、変数がそこで設定されていることがわかりません。</li>
a5d43b72413db3edd6b36a58f9bdf2cf6ff692f2Bob Halley </ul>
74cb99072c4b0ebd2ccafcfa284288fa760f7a1aMark Andrews
a5d43b72413db3edd6b36a58f9bdf2cf6ff692f2Bob Halley </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
4880900113e4d0f17884f3fbdbf4c302e3f9ea91Bob Halley<div class="section">
fd35453765c6494d077edca44f4d998af5fd4cfaDavid Lawrence<h2><a name="using" id="using">環境変数の使用</a></h2>
c8a42d6d81ff2fd9ad7fac94d4b85323554493c0Bob Halley
4fd3e3482c7e4ce01e2cf28f13e0152c8e50d746Mark Andrews
5d51e67c3b4f35c1be742574aacc1d88fe6ed444Mark Andrews <table class="related"><tr><th>関連モジュール</th><th>関連ディレクティブ</th></tr><tr><td><ul><li><code class="module"><a href="/mod/mod_authz_host.html">mod_authz_host</a></code></li><li><code class="module"><a href="/mod/mod_cgi.html">mod_cgi</a></code></li><li><code class="module"><a href="/mod/mod_ext_filter.html">mod_ext_filter</a></code></li><li><code class="module"><a href="/mod/mod_headers.html">mod_headers</a></code></li><li><code class="module"><a href="/mod/mod_include.html">mod_include</a></code></li><li><code class="module"><a href="/mod/mod_log_config.html">mod_log_config</a></code></li><li><code class="module"><a href="/mod/mod_rewrite.html">mod_rewrite</a></code></li></ul></td><td><ul><li><code class="directive"><a href="/mod/mod_authz_host.html#allow">Allow</a></code></li><li><code class="directive"><a href="/mod/mod_log_config.html#customlog">CustomLog</a></code></li><li><code class="directive"><a href="/mod/mod_authz_host.html#deny">Deny</a></code></li><li><code class="directive"><a href="/mod/mod_ext_filter.html#extfilterdefine">ExtFilterDefine</a></code></li><li><code class="directive"><a href="/mod/mod_headers.html#header">Header</a></code></li><li><code class="directive"><a href="/mod/mod_log_config.html#logformat">LogFormat</a></code></li><li><code class="directive"><a href="/mod/mod_rewrite.html#rewritecond">RewriteCond</a></code></li><li><code class="directive"><a href="/mod/mod_rewrite.html#rewriterule">RewriteRule</a></code></li></ul></td></tr></table>
6ef838d427c1ea858d2f09194a369134babf8b98Mark Andrews
6ef838d427c1ea858d2f09194a369134babf8b98Mark Andrews <h3><a name="cgi-scripts" id="cgi-scripts">CGI スクリプト</a></h3>
6ef838d427c1ea858d2f09194a369134babf8b98Mark Andrews
6ef838d427c1ea858d2f09194a369134babf8b98Mark Andrews
6d831cd0baf7dd2c133f7f9cbf295f3d80cf63a7David Lawrence <p>環境変数の主な利用法の一つは、CGI スクリプトに情報を伝えることです。
6d831cd0baf7dd2c133f7f9cbf295f3d80cf63a7David Lawrence 上で説明されているように、CGI スクリプトに渡される環境変数は Apache
dac2799ea19735503a4d27f517d821aea210e594Andreas Gustafsson の設定により設定される変数に加えて、リクエストの標準のメタ情報を含んでいます。
64e41159a919b0711321fe688ca5da4f4d1b7d80Bob Halley 詳細は <a href="howto/cgi.html">CGI チュートリアル</a>
5d51e67c3b4f35c1be742574aacc1d88fe6ed444Mark Andrews を参照してください。</p>
6d7585b3e948dd31bf78321d83ac0e024f44a71bMark Andrews
6d5dcd0dc9bdbd679282b1ffc47987d24c3a1346Bob Halley
6d7585b3e948dd31bf78321d83ac0e024f44a71bMark Andrews <h3><a name="ssi-pages" id="ssi-pages">SSI ページ</a></h3>
6d7585b3e948dd31bf78321d83ac0e024f44a71bMark Andrews
6d5dcd0dc9bdbd679282b1ffc47987d24c3a1346Bob Halley
6d7585b3e948dd31bf78321d83ac0e024f44a71bMark Andrews <p>mod_include の <code>INCLUDES</code> フィルタで処理される
1471a520e59ac12b413afa8d8b3158a87af97aa6Bob Halley server-parsed (SSI) ドキュメントでは、<code>echo</code>
1471a520e59ac12b413afa8d8b3158a87af97aa6Bob Halley 要素を使用すると環境変数が出力されます。
1471a520e59ac12b413afa8d8b3158a87af97aa6Bob Halley また、ページのある部分がリクエストの性質に応じて変更されるように、
94a3bcd132e515b4baa0884ba9dd0f361d2e17bcMark Andrews 環境変数をフロー制御要素で使うことができます。詳細は
1471a520e59ac12b413afa8d8b3158a87af97aa6Bob Halley <a href="howto/ssi.html">SSI チュートリアル</a> を参照してください。</p>
1471a520e59ac12b413afa8d8b3158a87af97aa6Bob Halley
4fd3e3482c7e4ce01e2cf28f13e0152c8e50d746Mark Andrews
5d51e67c3b4f35c1be742574aacc1d88fe6ed444Mark Andrews <h3><a name="access-control" id="access-control">アクセス制御</a></h3>
6d5dcd0dc9bdbd679282b1ffc47987d24c3a1346Bob Halley
5d51e67c3b4f35c1be742574aacc1d88fe6ed444Mark Andrews
5d51e67c3b4f35c1be742574aacc1d88fe6ed444Mark Andrews <p><code>allow from env=</code> ディレクティブと <code>deny from env=</code>
9f7d51ee3290e2a064d71016a6bd555b47134a7cMark Andrews ディレクティブを使用して、サーバへのアクセスを環境変数の値で制御することができます。
bb556a9bf3a15c7160fa4f1b71773ce12b1bedf6Bob Halley <code class="directive"><a href="/mod/mod_setenvif.html#setenvif">SetEnvIf</a></code>
64e41159a919b0711321fe688ca5da4f4d1b7d80Bob Halley ディレクティブと組み合わせることで、クライアントの特性に基づいて
1471a520e59ac12b413afa8d8b3158a87af97aa6Bob Halley サーバへのアクセス制御を柔軟に行なうことができるようになります。
1471a520e59ac12b413afa8d8b3158a87af97aa6Bob Halley たとえば、これらのディレクティブを使用して、特定のブラウザ (User-Agent)
1471a520e59ac12b413afa8d8b3158a87af97aa6Bob Halley からのアクセスを拒否することができます。</p>
fe37278859bce157001cca14cdfa3a761b0d5012Mark Andrews
1471a520e59ac12b413afa8d8b3158a87af97aa6Bob Halley
5c6762838c9e423753723ec2a963164e3d66ac32Mark Andrews <h3><a name="logging" id="logging">条件付きログ記録</a></h3>
798c83548f89091e3994ca5a9c8c7e9caaf89d10Mark Andrews
798c83548f89091e3994ca5a9c8c7e9caaf89d10Mark Andrews
<p><code class="directive"><a href="/mod/mod_log_config.html#logformat">LogFormat</a></code>
ディレクティブのオプション <code>%e</code>
を使用することで、環境変数をアクセスログに記録することができます。さらに、
<code class="directive"><a href="/mod/mod_log_config.html#customlog">CustomLog</a></code>
ディレクティブの条件分岐式を使用することで、
環境変数の値によってリクエストをログに記録するかどうかを決めることができます。
<code class="directive"><a href="/mod/mod_setenvif.html#setenvif">SetEnvIf</a></code>
ディレクティブと組み合わせることで、
どのリクエストをログに記録するかを柔軟に制御することが可能になります。たとえば、
<code>gif</code> で終わるファイル名へのリクエストはログに記録しない、
違うサブネットのクライアントからのリクエストだけをログに記録する、
という選択が可能です。</p>
<h3><a name="response-headers" id="response-headers">条件付き応答ヘッダ</a></h3>
<p><code class="directive"><a href="/mod/mod_headers.html#header">Header</a></code>
ディレクティブは環境変数の存在や不在によってクライアントへの応答に特定の
HTTP ヘッダを付けるかどうかを決めることができます。
これにより、たとえば、クライアントからのリクエスト
にあるヘッダがある場合にのみ特定の応答ヘッダを送る、というようなことが
できます。</p>
<h3><a name="external-filter" id="external-filter">外部フィルタの適用</a></h3>
<p><code class="directive"><a href="/mod/mod_ext_filter.html#extfilterdefine">ExtFilterDefine</a></code>
ディレクティブを使用して
<code class="module"><a href="/mod/mod_ext_filter.html">mod_ext_filter</a></code> で設定される外部フィルタは、
<code>disableenv=</code> と <code>enableenv=</code>
オプションを使って、環境変数による条件付き適用ができます。</p>
<h3><a name="url-rewriting" id="url-rewriting">URL の書き換え</a></h3>
<p><code class="directive"><a href="/mod/mod_rewrite.html#rewritecond">RewriteCond</a></code>
ディレクティブで<em>評価文字列</em>として
<code>%{ENV:...}</code> 式を指定することで、mod_rewrite
の書き換えエンジンが環境変数に基いて条件分岐を行なうことができます。
mod_rewrite が使用可能な変数で <code>ENV:</code> が前についていない変数は、
実際は環境変数ではないということに注意してください。
それらは他のモジュールからは使用できない mod_rewrite 用の特別な変数です。
</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
<div class="section">
<h2><a name="special" id="special">特別な目的の環境変数</a></h2>
<p>互換性の問題を解決するために、特定のクライアントと通信しているときは
Apache の動作を変更できる機構が導入されました。できるだけ柔軟にするために、
これらの機構は環境変数を定義することで呼び出されます。普通は、
<code class="directive"><a href="/mod/mod_setenvif.html#browsermatch">BrowserMatch</a></code>
ディレクティブを使いますが、たとえば <code class="directive"><a href="/mod/mod_env.html#setenv">SetEnv</a></code> ディレクティブや <code class="directive"><a href="/mod/mod_env.html#passenv">PassEnv</a></code> ディレクティブも使用することができます。</p>
<h3><a name="downgrade" id="downgrade">downgrade-1.0</a></h3>
<p>これを指定することで、リクエストが HTTP/1.0
より新しいプロトコルの場合でも、HTTP/1.0 として扱われます。</p>
<h3><a name="force-gzip" id="force-gzip">force-gzip</a></h3>
<p><code>DEFLATE</code> フィルタが使用するように設定されているときに、
この環境変数はブラウザの accept-encoding の設定を無視して常に
圧縮された出力を送るようにします。</p>
<h3><a name="force-no-vary" id="force-no-vary">force-no-vary</a></h3>
<p>応答ヘッダがクライアントに送られる前に <code>Vary</code>
フィールドを取り除きます。
クライアントの中にはこのフィールドを正しく解釈しないものがあります。
この変数を設定することでその問題を回避することができます。
この変数を設定すると、<strong>force-response-1.0</strong>
が設定されたことになります。</p>
<h3><a name="force-response" id="force-response">force-response-1.0</a></h3>
<p>これが設定されていると、HTTP/1.0 リクエストを発行するクライアントに対しては
常に HTTP/1.0 で応答するようになります。この機能は、
元々は AOL のプロキシの問題のために実装されました。HTTP/1.0 クライアントの中には、
HTTP/1.1 の応答を返されると正しく動作しないものがあるかもしれません。
この機能を使用することで、そのようなクライアントとの間の互換性問題を解決できます。</p>
<h3><a name="gzip-only-text-html" id="gzip-only-text-html">gzip-only-text/html</a></h3>
<p>これが 1 に設定されると、この変数は <code>text/html</code>
以外のコンテントタイプに対する、<code class="module"><a href="/mod/mod_deflate.html">mod_deflate</a></code>
提供の <code>DEFLATE</code> 出力フィルタを無効にします。
また、静的に、既に圧縮されたファイルを使用したい場合、
(gzip だけでなく、"identity" と異なる全てのエンコードに対して)
<code class="module"><a href="/mod/mod_negotiation.html">mod_negotiation</a></code> も変数を評価します。</p>
<h3><a name="no-gzip" id="no-gzip">no-gzip</a></h3>
<p>セットされると、<code class="module"><a href="/mod/mod_deflate.html">mod_deflate</a></code> の
<code>DEFLATE</code> フィルタがオフになります。
そして <code class="module"><a href="/mod/mod_negotiation.html">mod_negotiation</a></code>
はエンコードされたリソースを送らないようにします。</p>
<h3><a name="nokeepalive" id="nokeepalive">nokeepalive</a></h3>
<p>これが設定されている場合は、<code class="directive"><a href="/mod/core.html#keepalive">KeepAlive</a></code> を使用しないようにします。</p>
<h4><a name="prefer-language" id="prefer-language">prefer-language</a></h4>
<p><code class="module"><a href="/mod/mod_negotiation.html">mod_negotiation</a></code> の挙動に影響を与えます。
(<code>en</code>, <code>ja</code>, <code>x-klingon</code>といった)
言語タグが格納されていれば、その言語の variant を送信しようとします。
そのような variant がない場合は、
通常の<a href="content-negotiation.html">ネゴシエーション</a>処理が
適用されます。</p>
<h3><a name="redirect-carefully" id="redirect-carefully">redirect-carefully</a></h3>
<p>これはクライアントへのリダイレクトの送信をサーバがより注意深く
行なうようにします。
これは通常、リダイレクトに際してクライアントに
問題があることが分かっている場合に使われます。この機能は元々は
マイクロソフトのウェブフォルダのソフトが DAV
メソッドによるディレクトリのリソースへのリダイレクトの扱いに
問題がり、それを回避するために実装されました。</p>
<h3><a name="suppress-error-charset" id="suppress-error-charset">suppress-error-charset</a></h3>
<p><em>Apache 2.2 以降で利用可能</em></p>
<p>クライアントのリクエストに対する応答としてリダイレクトを送信する際、
レスポンスにはリダイレクトが自動的に行なえない (行なわれない)
場合に表示するテキストが含まれます。
通常、このテキストに合致したキャラクタセット、ISO-8859-1
でラベル付けをします。</p>
<p>しかし、リダイレクト先が別の文字セットを使っている場合、
ある問題のあるブラウザのバージョンでは、
リダイレクト先の実際の文字セットの代わりに、
リダイレクト元の文字セットを使ってしまうことがあります。
その結果、例えば変な描画が行なわれたりして、読めなくなったりします。</p>
<p>この環境変数を設定することで、リダイレクションテキストに対する
キャラクタセットの指定を除去しますので、それら問題のあるブラウザでも
リダイレクト先の文字セットを正しく使うようにできます。</p>
<div class="warning">
<h3>セキュリティ</h3>
<p>文字セットを指定せずにエラーページを送信すると、
クロスサイトスクリプティング <span class="transnote">(<em>訳注:</em> XSS)</span>
攻撃の危険性がでてきます。
HTTP/1.1 仕様に準拠していなくて、コンテンツの中身から文字セットを
"推測" しようとするブラウザ (MSIE) が実際にあるからです。
そのようなブラウザは UTF-7 文字セットを使って簡単に騙すことができます。
クロスサイトスクリプティング攻撃を防ぐために実装されている
通常のエスケープ機構が、入力データ中にある UTF-7 で
エンコードされたコンテンツ (リクエスト URI など) には
うまく動作しないからです。</p>
</div>
<h3><a name="proxy" id="proxy">force-proxy-request-1.0, proxy-nokeepalive, proxy-sendchunked, proxy-sendcl</a></h3>
<p>これらの指示子は <code class="module"><a href="/mod/mod_proxy.html">mod_proxy</a></code> の挙動を変更します。
詳細は <code class="module"><a href="/mod/mod_proxy.html">mod_proxy</a></code> のドキュメントをご参照ください。</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
<div class="section">
<h2><a name="examples" id="examples">例</a></h2>
<h3><a name="misbehaving" id="misbehaving">おかしな挙動をするクライアントに対してプロトコルの動作を変更する</a></h3>
<p>クライアントに関する既知の問題に対処するために、以下の行を
httpd.conf に入れることを推奨しています。</p>
<p>古いバージョンの Apache では、クライアントの問題に対応するために
httpd.conf に次の行を加えるよう推奨されていましたが、
今となっては、問題としていたクライアントは実際には見かけることは
なくなってきたので、この設定はもはや必要ないかもしれません。</p>
<div class="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></div>
<h3><a name="no-img-log" id="no-img-log">画像へのリクエストをアクセスログに記録しない</a></h3>
<p>この例では、画像へのリクエストがアクセスログに現れないようにします。
これを変更することで、特定のディレクトリのログ収集をやめたり、
特定のホストからのリクエストのログ収集をやめたりすることが簡単にできます。
</p>
<div class="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></div>
<h3><a name="image-theft" id="image-theft">「画像の盗用」を防ぐ</a></h3>
<p>この例は、別のサーバにいる人が、あなたのサーバにある画像を
inline 画像として使用することを防ぎます。
これは推奨されている設定ではありませんが、ある限定された状況では有効です。
ここでは、すべての画像は <code>/web/images</code>
というディレクトリにあると仮定します。</p>
<div class="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></div>
<p>この手法に関する詳しい情報は ServerWatch にあるチュートリアル
「<a href="http://www.serverwatch.com/tutorials/article.php/1132731">Keeping Your Images from Adorning Other Sites</a>
」を参照してください。</p>
</div></div>
<div class="bottomlang">
<p><span>言語: </span><a href="/en/env.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="/fr/env.html" hreflang="fr" rel="alternate" title="Français">&nbsp;fr&nbsp;</a> |
<a href="/ja/env.html" title="Japanese">&nbsp;ja&nbsp;</a> |
<a href="/ko/env.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
<a href="/tr/env.html" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>
</div><div id="footer">
<p class="apache">Copyright 2010 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="/mod/">モジュール</a> | <a href="/mod/directives.html">ディレクティブ</a> | <a href="/faq/">FAQ</a> | <a href="/glossary.html">用語</a> | <a href="/sitemap.html">サイトマップ</a></p></div>
</body></html>