* anydat.so
''anydat.so''とは、datファイルへのアクセスに応対する[[Apache>http://httpd.apache.org/]]の[[DSOモジュール>http://httpd.apache.org/docs/2.2/ja/dso.html]]です。
Apacheの一部であり、CGIではありません。
#contents
* 目的
[[read.html]]の導入によって、通常のブラウザがdatファイルへ直接アクセスするようになりました。
しかしファイルへ直接アクセスした場合、CGI等でのページ表示に比べ、行える応答制御に限界があります。
そこで、通常のApacheの設定では行えない機能を実現するために導入されました。
- アクセスされたdatファイルが無く、過去ログにあったとき、過去ログの案内を表示する
- IE6がShift_JISのファイルの扱いに不備があるため、XML化して対策
- [[mod_headers>http://httpd.apache.org/docs/2.2/ja/mod/mod_headers.html]]が使えないサーバでのヘッダ制御
* レスポンス
|CENTER:''ステータスコード''|CENTER:''条件''|CENTER:''内容・備考''|
|200|通常|通常|
|~|User-Agent「MSIE 6」|&color(green){<?xml version="1.0" encoding="Shift_JIS"?>&br;<text><![CDATA[};&br;dat内容&br;&color(green){]]></text>};&br;&br;datに緑字部分を付加&br;203も同様|
|203|過去ログ''未''html|1と最終レスの内容と過去ログ案内|
|~|過去ログhtml''化''|URLと過去ログ案内|
|302|User-Agent「Monazilla/」&br;現役dat無し|[[後述>#monazilla]]|
|404|スレッド無し|404 Not Found|
:&aname(monazilla){専用ブラウザの除外};|datファイルが無かったときのレスポンスが導入前と変わることで、[[専用ブラウザ>monazilla]]への影響と混乱が考えられるため、本来は専用ブラウザ側で対応すべきところ、経過措置として従来と同じレスポンスが返るようになっています。
:&aname(monazilla){専用ブラウザの除外};|datファイルが無かったときのレスポンスが導入前と変わることで、[[専用ブラウザ>monazilla]]への影響と混乱が考えられるため、本来は専用ブラウザ側で対応すべきところ、経過措置として従来と同じレスポンスになっています。
* .htacessの設定
<IfModule mod_rewrite.c>
<Files *.dat>
RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}/test/anydat.so -f
RewriteRule .* /test/anydat.so
</Files>
</IfModule>
datファイルへのアクセスは全て''anydat.so''を通していることになります。
* 旧pastdat.so
pastdat.soは、''anydat.so''の前身で過去ログ案内専用として作られました。
<Files *.dat>
ErrorDocument 404 /test/pastdat.so
</Files>
と設定することで、アクセスされたdatファイルが無かったときだけ呼び出されて過去ログ案内を返していましたが、現役のdatファイルにもDSOモジュールが必要になり、機能拡充して''anydat.so''となりました。
* 開発
開発者
◆cZfSunOs.U
経過
- 2006/07/25 - [[read.html]]プロジェクト始動
- 2006/08/29 - pastdat.so作成
- 2006/12/07 - ''anydat.so''作成
- 2007/05/13 - 全サーバ導入
過去ログ
- [[read.cgi 2006―JavaScriptはCGIの夢を見るか>http://qb5.2ch.net/test/read.cgi/operate/1153819270/]]
- [[read.js 2006ーJavaScriptはCGIの夢を見るか -2->http://qb5.2ch.net/test/read.cgi/operate/1163825500/]]
- [[read.cgi再開発スレ Part2>http://qb5.2ch.net/test/read.cgi/operate/1105909861/]]