プロが教えるわが家の防犯対策術!

はじめまして。
リダイレクト失敗時のエラー取得(perl)について質問させてください!

CGI(Perl)で、

print "Location: (リダイレクト先URL(他サーバ))\n\n";

としたとき、リダイレクト先のサーバが稼働していなくて、ページが表示
されず、「サーバが見つかりませんでした」などと表示されることがよく
あります。
サーバがダウンしているときは別のページを表示するようにしたいのです
が、何か方法はあるでしょうかぁ?

●思い当たるキーワードでいろいろ検索してみましたが、該当する物を見
つけられませんでした。
●下記のコードを試してみましたが、やっぱりダメでした。
→エラーとして認識されず、アドレスバーに他サーバのリダイレクト先URL
が表示された状態で「サーバが見つかりませんでした」と表示されまし
た。
eval
{
print "Location: (リダイレクト先URL(他サーバ))\n\n";
};
if ($@)
{
print "Location: (リダイレクト先URL(自サーバ))\n\n";
}
●「自サーバ」はniftyをしており、niftyではソケット通信が出来ませ
ん。

よろしくお願いいたします~!

A 回答 (1件)

Location: ヘッダに記述し出力した時の動作は、



・サーバ側(CGI)が、Location: ヘッダをクライアントに返す
・クライアント側(WWWブラウザ)は、Location: ヘッダ付きのデータを受け取ったら、改めてそのURLにアクセスする

という流れになります。リダイレクト先のサーバ側が生きていようが死んでいようが、Location: ヘッダの出力そのものはただの文字列ですので、それに失敗することはありません。
(そのため、例としてあげられたコードは、サーバのチェックとしてまったく意味がありません)

CGI側でリダイレクト先のサーバが生きているかどうか調べるには、
実際にそのサーバにアクセスしてみるしかないです。
CGI側でソケット通信が出来るのであれば、それでアクセスできますが、
それが無理となると、サーバの生死確認は不可能です。
    • good
    • 0
この回答へのお礼

早速のご回答、ありがとうございました。
やはり、ムリなのですね(T_T)
どうもありがとうございました~。

お礼日時:2008/09/15 01:29

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