株式会社エスロジカル
株式会社エスロジカル
SSL証明書(3,300円/1年~ DV、OV、EV)、セキュリティ、Web開発、Linux開発、Go言語

Apache:mod_asisモジュール

技術ドキュメント目次 -> Apache -> mod_asisモジュール

本技術ドキュメントは、2002~2004年頃に作成したものが多いです。
内容が古くなっていることもあるかと思いますが、ご了承ください。

サイフにやさしいSSL証明書
【低価格SSL証明書】弊社運営の低価格SSL証明書販売サイト、翌月末払いなど請求書払いも可能。


◆ はじめに

mod_asis モジュールを使用することで、
静的なコンテンツファイルの中に、
httpのレスポンスヘッダを記述することができるようになります。

コンテンツファイルのはじめのほうの行に書かれたレスポンスヘッダが、
そのまま(as is)クライアントに返されます。

mode_asis モジュールは、
1.3.x 系の apache に標準で組み込まれているので、
httpd.conf の設定を変更するだけで、
使用することができるようになります。

◆ httpd.conf の設定:DSOの場合

拡張子が .asis のファイルが、mod_asis で処理されるファイルである
という定義を行います。

LoadModule asis_module        libexec/mod_asis.so
AddModule mod_asis.c
....
<IfModule mod_mime.c>
....
    # Uncomment the following line to enable Apache's send-asis HTTP file
    # feature
    #
    AddHandler send-as-is asis
....
</IfModule>


◆ 簡単なサンプル(任意のヘッダの追加)

DocumentRootの直下に、test.asis というファイル名で、
次のような内容がかかれているファイルを用意します。

X-Test: testvalue

<html>
<head>
<title>test doc</title>
</head>
<body>
test document.
</body>
</html>


出力されるヘッダーを、
telnetコマンドを使用して擬似的なhttpリクエストを発生させ、
動作確認を行うと、、
X-Test: testvalue
というレスポンスヘッダが追加されていることが確認できます。

$ telnet 192.168.1.1 80
Trying 192.168.1.1...
Connected to ns.
Escape character is '^]'.
GET /test.asis HTTP/1.0
 
HTTP/1.1 200 OK
Date: Sat, 13 Apr 2002 18:05:31 GMT
Server: Apache/1.3.22 (Unix) mod_perl/1.22
X-Test: testvalue
Connection: close
Content-Type: text/html

<html>
<head>
<title>test doc</title>
</head>
<body>
test document.
</body>
</html>
Connection closed by foreign host.
$


◆ リダイレクトを行う asis のサンプル

リダイレクト(レスポンスコードが301 や 302)を行う asisファイルの
サンプルは次のようになります。

レスポンス301のサンプルファイル(/test301.asis)
Status: 301 Moved Permanently
Location: http://192.168.1.1/aaa/bbb.html
Content-type: text/html

<HTML>
<HEAD>
<TITLE>moved</TITLE>
</HEAD>
<BODY>
<A HREF="http://192.168.1.1/aaa/bbb.html">Move to Here.</A>
</BODY>
</HTML>


レスポンス302のサンプルファイル(/test302.asis)
Status: 302 Moved Temporarily
Location: http://192.168.1.1/aaa/bbb.html
Content-type: text/html

<HTML>
<HEAD>
<TITLE>moved</TITLE>
</HEAD>
<BODY>
<A HREF="http://192.168.1.1/aaa/bbb.html">Move to Here.</A>
</BODY>
</HTML>


レスポンス301の動作確認
$ telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
GET /test301.asis HTTP/1.0

HTTP/1.1 301 Moved Permanently
Date: Wed, 24 Apr 2002 14:59:17 GMT
Server: Apache/1.3.22 (Unix) mod_perl/1.22
Location: http://192.168.1.1/aaa/bbb.html
Connection: close
Content-Type: text/html

<HTML>
<HEAD>
<TITLE>moved</TITLE>
</HEAD>
<BODY>
<A HREF="http://192.168.1.1/aaa/bbb.html">Move to Here.</A>
</BODY>
</HTML>
Connection closed by foreign host.
$


レスポンス302の動作確認
$ telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
GET /test302.asis HTTP/1.0

HTTP/1.1 302 Moved Temporarily
Date: Wed, 24 Apr 2002 14:59:05 GMT
Server: Apache/1.3.22 (Unix) mod_perl/1.22
Location: http://192.168.1.1/aaa/bbb.html
Connection: close
Content-Type: text/html

<HTML>
<HEAD>
<TITLE>moved</TITLE>
</HEAD>
<BODY>
<A HREF="http://192.168.1.1/aaa/bbb.html">Move to Here.</A>
</BODY>
</HTML>
Connection closed by foreign host.
$


◆ その他のレスポンスコードを返すサンプル

その他のレスポンスコードを返す asisファイルのサンプルは
下記のようになります。

403: Forbidden
404: Not Found
500: Internal Server Error

確認方法は省略します。
上記同様に telnetコマンドを使用して 80番ポートに接続して、
擬似的なリクエストを発生させればOKです。

レスポンス403 のサンプルファイル
Status: 403 Forbidden

<HTML>
<HEAD>
<TITLE>Forbidden</TITLE>
</HEAD>
<BODY>
Forbidden
</BODY>
</HTML>


レスポンス404 のサンプルファイル
Status: 404 Not Found

<HTML>
<HEAD>
<TITLE>Not Found</TITLE>
</HEAD>
<BODY>
Not Found
</BODY>
</HTML>


レスポンス500 のサンプルファイル
Status: 500 Internal Server Error

<HTML>
<HEAD>
<TITLE>Internal Server Error</TITLE>
</HEAD>
<BODY>
Internal Server Error
</BODY>
</HTML>




■ Apache についての他のドキュメント


■ 他のグループのドキュメント

Apache  /  Linux  /  FreeBSD  /  OpenSSL  /  Perl  /  HTTPプロトコル  /  Jakarta Tomcat  /  Java  /  NetBSD  /  Oracle  /  PostgreSQL  /  UNIX の C言語  /  UNIX のコマンド  /  Windows  /  bind  /  システム運用TIPS

アンケートにご協力をお願いいたします。

1. このドキュメントへの評価をご選択ください。
         

2. ご感想をお書きください。