
apache(Version1.3.26)の設定で困っています。
URLからあるディレクトリに参照に行くと403のエラーとなり
"Forbidden"とか"このページの表示が認められていません"とかでると
思います。
このときに、404の"Not Found"、"ページが見つかりません"を出すように
したいのですが、その方法がわかりません。
ErrorDocument で作成したHTMLを表示させることはできるのですが、
HTMLを作成することなくそれを実現させたい。
これらの設定を何もしていない状態だと、IEとFireFox他で見た目が違います。
IEだと"ページが見つかりません"、FireFoxだと"Not Found"で表示されます。
その状態をそのままで403で接続したときにIEだと"ページが見つかりません"、FireFoxだと"Not Found"
がでるようにしたいです。
どなたかご存知の方いらっしゃいましたらご教授をお願いします。
No.2ベストアンサー
- 回答日時:
>HTMLを作成することなくそれを実現させたい。
FireFoxや IEでも「HTTPエラーメッセージを簡易表示する」のオプションを外した設定であれば、、、
ページを指定せずに、と言うことならば httpd.confか.htaccessに直接文章を書くことも出来ます
ErrorDocument 403 "<html><h1>Not Found</h1>
( http://httpd.apache.org/docs/2.0/ja/custom-error … )
## IEで「HTTPエラーメッセージを簡易表示する」のオプションが有効なまま(つまり初期状態の)
で、質問文に書かれた通りの事を実現するためには、面倒な作業が必要です
#条件1: リクエストヘッダのUser-Agent または環境変数HTTP_USER_AGENT などで クライアントがMSIEかどうかを判別し、それぞれに応じたメッセージを表示
#条件2: MSIEに対してはエラーメッセージが 512バイト以上であること
( http://support.microsoft.com/default.aspx?scid=k … の方法3 )
条件2 をクリアしないと レスポンスコード403に応じた簡易表示のページが表示されてしまいます
###ということで、現実的には
ErrorDocument 403 /cgi-bin/hoge.cgi
などとして CGIを指定して そのCGIで条件1、条件2 をクリアすると言うことになるかと思います
この回答への補足
早速のご回答ありがとうございます。
上記手順をご紹介頂いたということは、apacheからブラウザに
応答するレスポンスコード403を404にすり返るようなことは
できないということでしょうか?
そのような方法があるかどうかご存知ありませんでしょうか・・・・
No.5
- 回答日時:
>若しくはperlを使わない方法はご存知でしょうか?
perl以外のでもCGIならばどっちみち前記の設定は必要ですが、、、
PHPだと、、、私には良くは判りませんが以下のソースで出来たみたいです??
( http://search.net-newbie.com/php/function.header …
http://iwamode.net/etc/cgi_env_param_sample_php. … を参考に書いてみました )
<?php
header("HTTP/1.0 404 Not Found");
?>
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL <?php echo$_SERVER["REQUEST_URI"] ?> was not found on this server.</p>
</body>
</html>
以上を hoge.phpなどのfile名で設置し
ErrorDocument 403 /hoge.php などと指定
No.4
- 回答日時:
お答えをCGIとphpの2つに分けます。
まずはCGIから>早速試してみたところ動かない・・・・
そもそもCGIを動かす方法が判らないようですね、、、
その症状からするとCGIとしてではなくHTMLとして認識されています。
cgi-binフォルダの中に入れたという事であればScriptAliasに設定されていません。
httpd.confの中に
ScriptAlias /cgi-bin/ /home/httpd/cgi-bin/
と言う記述がある筈ですが(無論 #でコメントアウトされていたら無効ですが)
この場合なら /home/httpd/cgi-bin/ に hoge.cgi を置くと
http://ホスト名/cgi-bin/hoge.cgi でアクセスしてCGIとして動きます
(勿論パーミッションやuidも適切に)
cgi-binフォルダ以外なら
Options ExecCGI と
AddHandler cgi-script .cgi の設定=>Apacheの再起動が必要です
おっしゃるとおりcgiを動かす方法がわかっていません・・・・
PHPでやる方法で実現できたので、とりあえずは目的を達成できました。
今は少し時間がないので、今回教えて頂いたcgiの動かし方も
試してみます。ありがとうございました。
No.3
- 回答日時:
ErrorDocument 403 /cgi-bin/hoge.cgi
として
/cgi-bin/hoge.cgiの内容を
#! /usr/bin/perl
print <<HTML;
Status: 404
Content-type: text/html
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL $ENV{'REQUEST_URI'} was not found on this server.</p>
HTML
__END__
これで、出来るようです。
注意点1. Content-type: text/htmlの下の空行は必ず入れてください
注意点2. <!DOCTYPE ~ </p> 迄のHTML文はFireFoxで一旦わざと存在しないURLを入力して
表示されたエラーページのソースを参考にしてください
注意点3. 前述の理由から HTML文は512バイトを超えないようにしてください
(と言うか、このスクリプトのままで大丈夫の筈ですが)
## 実はCGIによって Status: 404 を出力する方法は
回答2を書く前に 頭に浮かんだのですが、
過去に同様の事をしようと思ってうまくいかなかった様な
覚えが有った気がして#2には書きませんでした
しかし、今試したところ出来たようですので、思い違いだったようです。
この回答への補足
ご回答ありがとうございます。
早速試してみたところ動かない・・・・
-------------------------------------------------
#! /usr/bin/perl print <
Not Found
The requested URL $ENV{'REQUEST_URI'} was not found on this server.
HTML __END__
-------------------------------------------------
と出てきました。
サーバ上でperlが動くかどうか試したところ
動いたのでperlが動かないわけではないようです。
少し話しが脱線してしまいますが、ダメな理由に心当たりはありますか?
若しくはperlを使わない方法はご存知でしょうか?
ちなみにPHPなら動きます。
No.1
- 回答日時:
IEやFireFoxのブラウザが出す404のページを表示させることができるかどうかはわかりませんが、403などのエラーページ自体はカスタマイズできます。
下記URLを参照してください。http://www.shtml.jp/htaccess/404.html
これで、403と404の両方を同じエラー画面が出るように設定すればいいのではないでしょうか。
この回答への補足
早速のご回答ありがとうございます。
カスタマイズしたエラーページですと、IEの「HTTPエラーメッセージを簡易表示する」という設定のせいで
403が出てしまいます。この設定をそのままに条件をクリアしたいです。
ブラウザに返すレスポンスコード403を404にすり返ることが
出来ればいいのですが、そのようなことが可能かどうかご存知でしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(IT・Webサービス) google サイトの目次表示について 1 2023/06/17 23:24
- サーバー IIS10でホスト名を設定するとHTTP Error 404が出てしまいます 1 2022/04/04 13:17
- オープンソース AWSドメイン名でApacheテスト・ページを表示させる方法を教えて下さい。 1 2023/04/26 15:59
- その他(ブラウザ) IE・edgeで日増しに観られるサイトが減ってくる。 1 2022/10/04 22:40
- その他(インターネット接続・インフラ) ブラウザにIPアドレス入力した時 1 2022/06/16 19:08
- Excel(エクセル) 【エクセルマクロ】既に開いているIEの、サイズや表示位置を変更するには 4 2022/12/01 22:57
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- Windows 10 windows10のクリーンインストールが完了出来ない 2 2022/06/04 13:33
- その他(ゲーム) SkyrimSEのMod organizer で困っています。誰か助けてください。 1 2022/12/05 01:49
- アプリ Edgeを操作するアプリについて 4 2023/05/11 22:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
apacheでPerl CGIが作動せず、5...
-
携帯サイトでバナーをランダム...
-
CGIの中で出力するテキスト内容...
-
他のページを見ましたが「Prema...
-
エクセルで毎月第2週日の水曜日...
-
週2回のペースって だいたい何...
-
C++からhtmlページを作る
-
エクセルで相対パスの書き方を...
-
htmlファイルへのcgiの組み込み...
-
「動的ページが表示されない」...
-
Perl、オブジェクト指向での初...
-
月の第一週とは
-
レスポンスヘッダの出力方法
-
時間によって変わるページについて
-
VBAでExcelのヘッダーに文字列+...
-
[Excel] ある日の曜日が当月の"...
-
HTTP 200 OKの後のリダイレクト?
-
日付から曜日を求めたい
-
HttpClientを利用してのサービ...
-
GET形式で&を渡す
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
apacheでPerl CGIが作動せず、5...
-
CGIの中で出力するテキスト内容...
-
apacheで403を404のように見せる
-
ホームページビルダーV9で作成...
-
CGIを使って、ホームページの画...
-
CGIで出力するhtmlの<!DOCTYPE ...
-
月の第一週とは
-
エクセルで相対パスの書き方を...
-
エクセルで毎月第2週日の水曜日...
-
毎○曜日って、使いますか?
-
週2回のペースって だいたい何...
-
[Excel] ある日の曜日が当月の"...
-
よくある 『 第○(1・2・3・4・...
-
VBA。複数のChangeイベントをま...
-
[C#]ListView一覧表示時の幅設...
-
DBを10件毎に表示ページング...
-
VBAでExcelのヘッダーに文字列+...
-
Excelで第一〇曜日を求める方法...
-
アンケートなどの1日1回の投...
-
SpreadDesignerの列ヘッダ
おすすめ情報