アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんにちは。
かなりハマってしまいました。
多分これ以上は、自身の力で解決できそうにないと思い質問させて頂きます。

現在、Perlを使ったシステムを作っています。
そこでページが見つからなかった場合に、どのページが見つからなかったのか、そのURLに合わせて
「ページが見つかりません。○○を確認してください」のような動的なページを作成したいと思っています。

■現状
htaccessで、
ErrorDocument 404 /maintainace/cgi/make_page_err.cgi

の記述をしています。

■期待する結果
呼び出し先のCGI側で$ENV{'REQUEST_URI'}から
エラーとなったURLを取得し、それに合わせて「Print xxxx」をする
(さらに最終的にはHTMLを作成し、それを表示したい)

■現在の結果
無反応。
ただし、処理が走っているかを確認するために、呼び出し先のCGIに
open File, ">>./404_log.txt";

を入れると正しくテキストファイルが書き込まれる → 通っていることまでわかる。

試しにCGIの先頭に
print "Content-type: text/html\n\n";
print "aaa";

exit;

とすると「Oops! This link appears to be broken.」(Firefox)のエラー画面が表示。
上記のテキスト書き込みなし。

更に
ErrorDocument 404 /maintainace/cgi/make_page_err.cgi

を絶対パスにしたところ
動作はするが、$ENV{'REQUEST_URI'}の値が「make_page_err.cgi」とCGI自身なり、
元のURLが拾えない。


このような状態です。
ネットでもいろいろ検索しましたが、求めている回答は見つかりませんでした。
直接の回答でなくても、参考になるURLなどでも構いませんので
ご存じある方お願いいたします。

A 回答 (1件)

$ENV{'REQUEST_URI'} では取得できないと思います。



htaccessで、

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ maintainace/cgi/make_page_err.cgi?$1 [L]

これで $ENV{'QUERY_STRING'} で取得できるのでは。

参考URL:http://webings.net/htaccess/rewriteerror/
    • good
    • 0
この回答へのお礼

geeok様

ビンゴでした!!
多分8時間くらいネットでいろいろ調べてもできず、正直無理かもと思っていました。
教えていただいたサイトも勉強になりそうです。

本当に助かりました。
ありがとうございました。

お礼日時:2011/05/19 23:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!