• ベストアンサー

apache2のエラーページを変更したい

Redhat9+apache2でwebサイトを構築しました。 サイトの無いページにアクセスしようとしたりCGIでエラーがあった場合 デフォルトで 404エラーなら /var/www/error/HTTPD_NOT_FOUND.html.var 500エラーなら /var/www/error/HTTPD_INTERNAL_SERVER_ERROR.html.var になってますが apacheのエラーページは寂しいので 自分で作り変えたいんですが プログラムの知識がないのでさっぱりわかりません。 簡単に変更する方法ってないんでしょうか? error.htmlを用意して、全てのエラーでこのerror.htmlに飛ばすようにしたいんです。 よろしくお願いします。

  • koozou
  • お礼率91% (164/179)

質問者が選んだベストアンサー

  • ベストアンサー
  • xjd
  • ベストアンサー率63% (1021/1612)
回答No.2

httpd.conf の ErrorDocumentディレクティブを修正すればよいです。 ErrorDocument エラーコード オプション ErrorDocument 404 "Sorry. I can't find your requested file." ErrorDocument 404 /error/notfound.html など

koozou
質問者

お礼

回答ありがとうございます。 httpd.conの ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var を ErrorDocument 404 /error/NOT_FOUND.html と 変更しました。 apacheのエラーページではなくなりましたが ブラウザのエラーページになってしまい NOT_FOUND.htmlになりません。 何が違っているのでしょうか??

その他の回答 (2)

  • xjd
  • ベストアンサー率63% (1021/1612)
回答No.3

>ブラウザのエラーページになってしまい >NOT_FOUND.htmlになりません。 >何が違っているのでしょうか?? 間違っていません。 InternetExplorer のうっとうしい「仕様」です。 ErrorDocument の説明を読んでください。 http://httpd.apache.org/docs-2.1/ja/mod/core.html Googleで調べればすぐに分かることですので、まず自分で調べてみましょう。

koozou
質問者

お礼

回答が遅くなり申し訳ないです。 仕様ですか、それは困りました。 今回は至急知りたかったものですから こちらで質問させていただきました。 ありがとうございました。

回答No.1

Apache2/error/ フォルダ内のファイルを書き換えます。 すべてのエラーを一つのHTMLファイルで表現することは、エラーコードの識別を不可能にするのであまりおすすめでないと思われます。

koozou
質問者

お礼

そこのファイルを書き換えるということまでは わかるのですが それをどう書き換えればいいのかが わからないんです。 文字を変更するぐらいはなんとかできそうなんですが 画像を使ったりしたいんで、どうせなら 404エラーならnot_found.htmlって具合に変更できればと思ってます。 お言葉どおり エラーをひとつにまとめてしまうのは やめることにします。

関連するQ&A

  • Server error! Error 500

    RedHat7.3, apache-2でCGIが動くようにしたいのですが、 httpd.confをいじったりいろいろやってるのですが Server error! Premature end of script headers: tmp.cgi Error 500 と言われてしまいます。 Object not found!(Error404)ではないのでcgiファイルがあることは認識されてるようですが、 ”早すぎる終わり”をどうやったら回避できますか? 教えてください。

  • apache でバイナリのCGIを動かすには

    apache でバイナリのCGIを動かすにはどうすればよいのでしょうか? (なお、プログラム自体に問題は決してありません。『HTTPD』を使うと問題なく動作します) OS:WIN98 C++バイナリのCGIを呼び出すと下記エラーとなります。 Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. Please .... the error. More ... log. - Apache/1.3.12 Server at http://127.0.0.2/ Port 80 最終アクセスログ 127.0.0.1 - - [12/Mar/2001:23:20:27 +0900] "GET /ab.cgi HTTP/1.1" 500 610 最終エラーログ [Mon Mar 12 23:20:25 2001] [error] [client 127.0.0.1] Premature end of script headers: e:/www.homepage/kokucho81/ab.cgi apache の httpd.conf と httpd.conf.default との比較 ** httpd.conf ServerName http://127.0.0.2/ ** httpd.conf.default #ServerName new.host.name ** httpd.conf DocumentRoot "E:/WWW.HOMEPAGE/KOKUCHO81" ** httpd.conf.default DocumentRoot "C:/Apache/htdocs" ** httpd.conf <Directory /> Options FollowSymLinks ExecCGI AllowOverride None ** httpd.conf.default <Directory /> Options FollowSymLinks AllowOverride None ** httpd.conf <Directory "E:/WWW.HOMEPAGE/KOKUCHO81"> ** httpd.conf.default <Directory "C:/Apache/htdocs"> ** httpd.conf Options Indexes FollowSymLinks ExecCGI ** httpd.conf.default Options Indexes FollowSymLinks MultiViews ** httpd.conf AddHandler cgi-script .cgi ** httpd.conf.default #AddHandler cgi-script .cgi そもそも、設定が足りてないんでしょうか? apacheを良く使う方、よろしくお願いします。m(_ _)m

  • RedHat9+Apache2でテストページしか表示しない

    RedHat9+Apache2でサーバ構築しようとしているところです。 Apache2は最新版をDLしてきました。 httpd.confの設定を変えたつもりなのですが、反映されてないようです。 DocumentRoot "/home/www" そのちょっと下 <Directory "/home/www"> としてApacheを再起動しますが、デフォルトテストページを表示したまま変化ありません。 もちろん/home/wwwにはindex.htmlを置いています。 どこを確認したら良いでしょうか? また、必要な情報がありましたらすく書き込みします。 以上お願いします。

  • apacheのCGI設定について教えてください。

    CGIの勉強のために、古いパソコンに fedora core 4 をインストールしてapache でローカルのテスト用サーバーにしようとしています。 /var/www/html に設置した簡単な perl CGI は動くのですが、同じものをユーザーのホームディレクトリに設置すると、internal server error になってしまいます。 ***** 以下 httpd.confの抜粋です。***** #UserDir disable UserDir public_html <Directory /home/*/public_html> AllowOverride All Options Includes ExecCGI FollowSymLinks SetHandler cgi-script </Directory> AddHandler cgi-script .cgi .pl ************************************** サーバーのエラーログを見ると Premature end of script headers: test.cgi となっています。htmlをprintしているだけのスクリプトで、/var/www/html では動くので、apache の設定の問題かと思っています。 ちょっとカテゴリーが違うかもしれませんが、よろしくお願いします。

    • ベストアンサー
    • Perl
  • Apache2.2 Aliasについて

    http://www.adminweb.jp/apache/docroot/index3.html 上のサイトを参考に、ドキュメントルート以外の場所へアクセスできるようにしたいんですが 参考サイト通りにやっても、うまく動きません。 httpd.confは <IfModule alias_module> Alias /labo/ "C:/Apache_Server/data/" <Directory "C:/Apache_Server/data"> Allow from all </Directory> ScriptAlias /cgi-bin/ "C:/Apache_Server/Apahce2.2/cgi-bin/" </IfModule> このように書いています。 (ServerRoot は "C:/Apache_Server/Apahce2.2" DocumentRoot は "C:/Apache_Server/Apahce2.2/htdocs"です) C:\Apache_Server\data に index.htmlを置き http://localhost/labo/index.html へアクセスしても Not Found The requested URL /labo/index.html was not found on this server. と表示されます。 環境はApache2.2、windows7です。 どこか間違っているところがあるのでしょうか? よろしくお願いいたします。

  • LinuxのapacheでCGIが動かない

    RedHatLinux7でイントラネットでWebサーバーを構築しました(apache)で、CGIを動かしたいのですが、動きません。あるサイトで「httpd.conf の AddHandler cgi-script .cgiを生かせばいい」となっていたのでそうしましたが、まだ動きません。あと何を設定すれば良いのですか?(CGIのパーミッションはちゃんとしています。)httpd.confにCGIの記述が他にもありましたが意味がわからずそのままにしています。

  • redhat 7.0 でApacheでCGI

    今、ApacheでWEBサーバーつくったのはいいでんすが、なぜかどのCGIも動きません。Internal Server Eroor がでます。 おそらくhttpd.confの設定だろうと思うのですが、どうやってもうまくいきません。 ちなみにCGIの中身はちゃんとチェック済みです(フリーのCGIスクリプトを3っつくらいためしました)あと、パーミッション設定もチェック済みで、テキストをただ表示させるだけのCGIすら動きません。 よければどなたかhttpd.confの中身のせときます。 どなたかアドバイスと、くわしくhttpd.confの設定がのってるサイトを教えていただけないでしょうか? あと、できればWebminでの設定方法を知っている方おしえていただけないでしょうか? http://ks-pro.dns2go.com/httpd.conf.txt

  • Apacheでのコンテントネゴシーエーションのやり方

    会社のApacheでローカルなサーバを動かしています。 ある日、拡張子なしでCGIを実行したいと思い立ちました。 具体的には、 http://localhost/ にアクセスしたときに、「index.*」を探して、結局「index.cgi」を実行するようにしたいです。 そこで、設定ファイル(httpd.conf)を次のように変更しました。 ・ドキュメントルートのOptionsにExecCGIとMultiViewsを追加 Options FollowSymLinks ExecCGI MultiViews ・DirectoryIndexにindexと指定 DirectoryIndex index これでできるかと思ったのですが、 http://localhost/ にアクセスすると「403 Forbidden」が表示されてしまいます。さらに、 http://localhost/index にアクセスすると「404 Not Found」となります。 普通に http://localhost/index.cgi としてアクセスすると、問題なくページが表示されます。 タイプマップを使えば実現できるのですが、一々「.var」ファイルを作成するのが面倒なので、一括で行いたいと思っております。 どこの設定を見直せばよろしいのでしょうか? ご教示ください。よろしくお願い致します。 OS : Linux debian 2.6.18-6-486 httpd : Apache/2.2.8 (Unix) perl : v5.10.0 built for i686-linux

  • 500 Internal Server Error

    500 Internal Server Errorが出ます。 サーバ:CentOS6.4 サーバ側の文字コード:UTF-8 perlのパス:/usr/bin/perl index.cgiの文字コード:LF (サーバ上で直接作成) index.cgiのパーミッション:777 (パーミッションの問題を避けるためわざと、777に設定) ここで、サーバ上で直接実行 perl /var/www/html/index.cgi すると、正しく処理の結果が返ってきてエラーは出ません。 しかし、クライアントのブラウザでindex.cgiにアクセスすると、500 Internal Server Errorが出ます。 なお、index.cgiを設置するディレクトリはApacheで以下のように設定しcgiスクリプトを有効にしています。 <Directory “/var/www/html”> Options FollowSymLinks ExecCGI </Directory> AddHandler cgi-script .cgi .pl #AddDefaultCharset UTF-8 ******************************************************* 【/var/www/html/index.cgi】 #!/usr/bin/perl print "Content-type: text/html"; print "<html>"; print "<body>"; print "<p>"; print "CGI"; print "</p>"; print "</body>"; print "</html>"; スクリプトの文法に問題があれば、サーバ上で直接実行させた時点でエラーを吐きそうですし、 パーミッションは777にしていますし、Apacheの設定もcgiを有効にしているので 他に500 Internal Server Errorが出る原因が掴めません。 Apacheの設定で、#AddDefaultCharset UTF-8 として文字セットを無効にした場合は CGIスクリプトの方で何か追加してやらないと、文字化け以前の問題で必ず500 Internal Server Errorを吐くんですかね? ご指導のほどよろしくお願い致します。

    • ベストアンサー
    • CGI
  • Apache HTTP Server

    インストール時にIP番号 「127.0.0.1」にApache HTTP Serverを設定し、Apache の「htdocs」 にhello.cgiというファイルを保存したのに、 1. Apacheを立ち上げると httpd.exe: Could not reliably determine the server's fully qualified domain name, using 192.168.131.65 for ServerName とエラー表示(?)されます。 2. URLを「http://127.0.0.1/hello.cgi」と指定してもブラウザ(FireFox)には 「127.0.0.1 のサーバへの接続を確立できませんでした。」とエラーになります。 何がいけないのでしょうか? どなたか教えてくださると幸甚です。