中田様 'REQUEST_URI'と'REDIRECT_STATUS'の対応ありがとうございます。
手元のスクリプトで確認したところ 無事動作しました。
>ErrorDocument でCGIを動作させる
いま Apache for Windows 1.3.22 を試用中なのですが、こちらでも同様の不具合がっ(^^A;
「http://」で書き出さないとCGIは動かず(この場合はブラウザ側でリダイレクトするから動く)、
CGIソースが生で表示されてしまってエラーステータス(特にファイルパス)が拾得できません。むろんSSIもScriptAliasもダメ。
この機能はどうも、いまのところはUNIXベースのApacheでしか実現できてないみたい…。
#これができると、レンタル仕様の掲示板やアクセスカウンタの設計が恐ろしく楽になるんですけどね。
田村さん、
現在の仕様はそうですね。
いろいろ改良しようと思っていますが、次のバージョンは来年です。
他にも何かありましたらどうぞ。
中田様 ありがとうございます。
現段階ではそのような仕様だったのですね
また何かありましたら書かさせて頂くことも
あると思いますのでよろしくお願いします。
田村さん、いとさん、
そのあたりは Apache とは違いますね。REDIRECT_STATUS には対応していません。
できるだけ同じようなことができるようにしたいとは思いますが。
http://127.0.0.1/... になる件は調べて直します。>いとさん
いと様 ご回答ありがとうございます。
結果から先に言うと CGIの動作はそれでしました。
が、今までunixサーバでエラー表示にerror.cgi(自作)を使っていて
それを今回自宅サーバにも使えないかということで
今回の件に至りました。
今まではUnixで .htaccess に そのサーバの絶対パス
ex. /home/username/public_html/error.cgi
(内容的には アクセスしたアドレスを表示してそのファイルはありません
と 言うような事を表示させるCGI)
を記述して 実行していた時に 404になるファイルにアクセスすると
CGIの環境情報に
$ENV{'REQUEST_URI'} = 〜/aaaa/aaaa (実際アクセスすると404になるアドレス)
が入ってたのですけども
今回ANHTTPDで メッセージオプションのところに
http〜 から書くと
$ENV{'REQUEST_URI'} = そのCGIのアドレス
となってしまいます。
あとは $ENV{'REDIRECT_STATUS'} とかの引継ぎもできないようなので
これらを使うのは無理なのでしょうか?
田村さん
そのCGIが 404.cgi だとして、http://…/…/404.cgi が
正常に動いているならエラーメッセージとしても動きます。
ソースが表示されるということは、ドライブ:\パス\404.cgi の
ような設定をされていませんか?
そこはCGIなら /…/404.cgi のように書けばいいのですが、
テストしてみたところどうもバグのようで
http://127.0.0.1/…/404.cgi にアクセスしてしまいます。
サーバ自身でのテストならまあ構わないでしょうが、
他のクライアントPCからのアクセスではクライアント自身に
アクセスすることになってしまい問題があります。
http://IPアドレスまたはサーバ名/…/404.cgi のように書けば
とりあえず問題はないと思います。
ANHTTPを使わせて頂いてます。
ユーザ定義のメッセージで(404等)
CGIを実行することは出来ないのでしょうか?
CGIを指定するとソースがそのまま出てきてしまいます。