blob: c4684b748fbe581363be963ab045807dbe794909 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
|
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja"><head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<!--
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
This file is generated from xml source: DO NOT EDIT
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-->
<title>Apache のハンドラの使用 - Apache HTTP サーバ バージョン 2.4</title>
<link href="./style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="./style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="./style/css/prettify.css" />
<script src="./style/scripts/prettify.min.js" type="text/javascript">
</script>
<link href="./images/favicon.ico" rel="shortcut icon" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="./mod/">モジュール</a> | <a href="./mod/directives.html">ディレクティブ</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="./glossary.html">用語</a> | <a href="./sitemap.html">サイトマップ</a></p>
<p class="apache">Apache HTTP サーバ バージョン 2.4</p>
<img alt="" src="./images/feather.png" /></div>
<div class="up"><a href="./"><img title="<-" alt="<-" src="./images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">HTTP サーバ</a> > <a href="http://httpd.apache.org/docs/">ドキュメンテーション</a> > <a href="./">バージョン 2.4</a></div><div id="page-content"><div id="preamble"><h1>Apache のハンドラの使用</h1>
<div class="toplang">
<p><span>翻訳済み言語: </span><a href="./en/handler.html" hreflang="en" rel="alternate" title="English"> en </a> |
<a href="./es/handler.html" hreflang="es" rel="alternate" title="Español"> es </a> |
<a href="./fr/handler.html" hreflang="fr" rel="alternate" title="Français"> fr </a> |
<a href="./ja/handler.html" title="Japanese"> ja </a> |
<a href="./ko/handler.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> |
<a href="./tr/handler.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a> |
<a href="./zh-cn/handler.html" hreflang="zh-cn" rel="alternate" title="Simplified Chinese"> zh-cn </a></p>
</div>
<div class="outofdate">この日本語訳はすでに古くなっている
可能性があります。
最近更新された内容を見るには英語版をご覧下さい。
</div>
<p>Apache のハンドラの使用に関して記述しています。</p>
</div>
<div id="quickview"><a href="https://www.apache.org/foundation/contributing.html" class="badge"><img src="https://www.apache.org/images/SupportApache-small.png" alt="Support Apache!" /></a><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#definition">ハンドラとは</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#examples">例</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#programmer">プログラマ向けのメモ</a></li>
</ul><h3>参照</h3><ul class="seealso"><li><a href="#comments_section">コメント</a></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="definition" id="definition">ハンドラとは</a></h2>
<table class="related"><tr><th>関連モジュール</th><th>関連ディレクティブ</th></tr><tr><td><ul><li><code class="module"><a href="./mod/mod_actions.html">mod_actions</a></code></li><li><code class="module"><a href="./mod/mod_asis.html">mod_asis</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_imagemap.html">mod_imagemap</a></code></li><li><code class="module"><a href="./mod/mod_info.html">mod_info</a></code></li><li><code class="module"><a href="./mod/mod_mime.html">mod_mime</a></code></li><li><code class="module"><a href="./mod/mod_negotiation.html">mod_negotiation</a></code></li><li><code class="module"><a href="./mod/mod_status.html">mod_status</a></code></li></ul></td><td><ul><li><code class="directive"><a href="./mod/mod_actions.html#action">Action</a></code></li><li><code class="directive"><a href="./mod/mod_mime.html#addhandler">AddHandler</a></code></li><li><code class="directive"><a href="./mod/mod_mime.html#removehandler">RemoveHandler</a></code></li><li><code class="directive"><a href="./mod/core.html#sethandler">SetHandler</a></code></li></ul></td></tr></table>
<p>「ハンドラ」とは、ファイルが呼ばれたときに実行される動作の
Apache における内部表現です。
通常、ファイルはファイルタイプ<span class="transnote">(<em>訳注:</em> MIME-type)</span>に基づいた暗黙のハンドラがあります。
普通はすべてのファイルは単にサーバに扱われますが、
ファイルタイプの中には別に「ハンドル」<span class="transnote">(<em>訳注:</em> 扱う)</span>
されるものもあります。</p>
<p>ファイルの拡張子や置いている場所に基づいてファイルタイプと関係なく、
ハンドラを明示的に設定することもできます。
これはより優雅な解決法という点と、ファイルにタイプ<strong>と</strong>ハンドラの両方を関連付けることができるという点で優れています。
(<a href="mod/mod_mime.html#multipleext">複数の拡張子のあるファイル</a>も参照してください)。</p>
<p>ハンドラはサーバに組み込んだり、モジュールとして含めたり、
<code class="directive"><a href="./mod/mod_actions.html#action">Action</a></code>
ディレクティブとして追加したりすることができます。
以下は標準配布に組み込まれているハンドラです。
</p>
<ul>
<li><strong>default-handler</strong>:<code>default_handelr()</code>
を使ってファイルを送ります。
静的なコンテンツを扱うときにデフォルトで使用されるハンドラです。
(<code class="module"><a href="./mod/core.html">core</a></code>)</li>
<li><strong>send-as-is</strong>:
HTTP ヘッダのあるファイルをそのまま送ります。
(<code class="module"><a href="./mod/mod_asis.html">mod_asis</a></code>)</li>
<li><strong>cgi-script</strong>: ファイルを CGI
スクリプトとして扱います。
(<code class="module"><a href="./mod/mod_cgi.html">mod_cgi</a></code>)</li>
<li><strong>imap-file</strong>:
イメージマップのルールファイルとして解析します。
(<code class="module"><a href="./mod/mod_imagemap.html">mod_imagemap</a></code>)</li>
<li><strong>server-info</strong>: サーバの設定情報を取得します。
(<code class="module"><a href="./mod/mod_info.html">mod_info</a></code>)</li>
<li><strong>server-status</strong>: サーバの状態報告を取得します。
(<code class="module"><a href="./mod/mod_status.html">mod_status</a></code>)</li>
<li><strong>type-map</strong>:
コンテントネゴシエーションのためのタイプマップとして解析します。
(<code class="module"><a href="./mod/mod_negotiation.html">mod_negotiation</a></code>)</li>
</ul>
</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="example1" id="example1">CGI スクリプトを用いて静的なコンテンツを変更する</a></h3>
<p>以下のディレクティブによって、拡張子が <code>html</code>
であるファイルは <code>footer.pl</code>
CGI スクリプトを起動するようになります。</p>
<pre class="prettyprint lang-config">Action add-footer /cgi-bin/footer.pl
AddHandler add-footer .html</pre>
<p>CGI スクリプトは希望の修正や追加を行なって、元々要求された文書
(環境変数 <code>PATH_TRANSLATED</code>
で指されています) を送る責任があります。
</p>
<h3><a name="example2" id="example2">HTTP ヘッダのあるファイル</a></h3>
<p>以下のディレクティブは <code>send-as-is</code>
ハンドラを使用するように指示します。このハンドラは自分自身の HTTP
ヘッダを持っているファイルに使用されます。ここでは、拡張子に関わらず、
<code>/web/htdocs/asis</code> ディレクトリにある全てのファイルは
<code>send-as-is</code> ハンドラによって扱われます。</p>
<pre class="prettyprint lang-config"><Directory /web/htdocs/asis>
SetHandler send-as-is
</Directory></pre>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="programmer" id="programmer">プログラマ向けのメモ</a></h2>
<p>ハンドラの機能を実装するために、利用すると便利かもしれないものが
<a href="developer/API.html">Apache API</a>
に追加されました。詳しく言うと、<code>request_rec</code>
構造体に新しいレコードが追加されたということです。</p>
<pre class="prettyprint lang-c">char *handler</pre>
<p>もしモジュールがハンドラに関わりたい場合、
やらなければならないことは、リクエストが <code>invoke_handler</code>
ステージに達する以前に <code>r->handler</code>
を設定することだけです。ハンドラはコンテントタイプの代わりに
ハンドラ名を使うようになっていること以外は、以前と同じように実装されています。
必ず要求されているわけではありませんが、メディアタイプ
の名前空間を侵さないように、ハンドラの名前にはスラッシュを含まない、
ダッシュ<span class="transnote">(<em>訳注:</em> "-")</span>で分離された名前を付ける習慣になっています。</p>
</div></div>
<div class="bottomlang">
<p><span>翻訳済み言語: </span><a href="./en/handler.html" hreflang="en" rel="alternate" title="English"> en </a> |
<a href="./es/handler.html" hreflang="es" rel="alternate" title="Español"> es </a> |
<a href="./fr/handler.html" hreflang="fr" rel="alternate" title="Français"> fr </a> |
<a href="./ja/handler.html" title="Japanese"> ja </a> |
<a href="./ko/handler.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> |
<a href="./tr/handler.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a> |
<a href="./zh-cn/handler.html" hreflang="zh-cn" rel="alternate" title="Simplified Chinese"> zh-cn </a></p>
</div><div class="top"><a href="#page-header"><img src="./images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">コメント</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div>
<script type="text/javascript"><!--//--><![CDATA[//><!--
var comments_shortname = 'httpd';
var comments_identifier = 'http://httpd.apache.org/docs/2.4/handler.html';
(function(w, d) {
if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
d.write('<div id="comments_thread"><\/div>');
var s = d.createElement('script');
s.type = 'text/javascript';
s.async = true;
s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
(d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
}
else {
d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
}
})(window, document);
//--><!]]></script></div><div id="footer">
<p class="apache">Copyright 2019 The Apache Software Foundation.<br />この文書は <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="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="./glossary.html">用語</a> | <a href="./sitemap.html">サイトマップ</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
if (typeof(prettyPrint) !== 'undefined') {
prettyPrint();
}
//--><!]]></script>
</body></html>
|