- 締切済み
RedHat LINUX7.2のapacheについて
上記のLinuxにデフォルトでapacheを入れる設定にしてインストールしたのですが、 インストール後、404や403などのエラーコードのHTMLを書き換える為、 /etc/httpd/conf/httpd.conf に # Error documents ErrorDocument 404 ERROR/404.html ErrorDocument 403 ERROR/403.html のように書き換え、/var/www/html/ のapacheの最初のindex.htmlが入っていた ディレクトリにERRORディレクトリを作り、中に403.html等を入れているのですが、 403のエラーメッセージが、最初のまま変わりません。 ErrorDocument 403 "403 error とした場合には、ちゃんとただのテスストで「403 error」と応答が返るように変える事ができたのですが、 htmlの表示と指定方法になると何故か難しくて、わかりません。apacheの公式ページの通りに書いたと思うのですが。何故でしょうか。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- yurarinco
- ベストアンサー率34% (20/58)
補足です。#4の例ではセキュリティー的に問題になる 場合もありうるので、そのまま使うなら、次のように する方がいいと思います。 #! /usr/bin/perl $request_uri = $ENV{'REQUEST_URI'}; $request_uri =~ s/>/>/g; $request_uri =~ s/</</g; $request_uri =~ s/&/&/g; print <<"EOF"; Content-Type: text/html <html> <head> <title>404 Not Found</title> </head> <body> <h3>404 Not Found</h3> <p>$request_uri was not found.</p> </body> </html> EOF
- yurarinco
- ベストアンサー率34% (20/58)
デフォルトのエラーで「~~.html Not Found」と 出るのは、どこかにあるそういうhtmlファイルを 読み込んで表示しているのではなくて、 apacheがその場で生成して表示しているから 可能なのだと思います。 どのページにアクセスしようとしてエラーになったのか は、環境変数の REQUEST_URI とかに入っていると 思うので、この内容を表示するためには、やはり CGIとかの何らかのプログラミングが必要ではないかなぁ と思います。 PerlのCGIの例) /ERROR/404.cgi #! /usr/bin/perl print <<"EOF"; Content-Type: text/html <html> <head> <title>404 Not Found</title> </head> <body> <h3>404 Not Found</h3> <p>$ENV{'REQUEST_URI'} was not found.</p> </body> </html> EOF
- yurarinco
- ベストアンサー率34% (20/58)
(#1の補足の内容について) 私もapacheの再起動くらいしか思いつかないです。 ついでの方の話は、やはりCGIとかを使うしか ないと思います。
補足
再起動したらうまくいきました。皆様どうも有り難う御座います。 2つ目の方なのですが、デフォルトの表示ではちゃんと URLを表示して、「~~.html Not Found」と表示が出るのですが、 この機能を、自分の作ったHTMLに流用利用することは出来ませんか。
- SpiralGalaxy
- ベストアンサー率39% (649/1653)
apache の再起動はされましたか?設定ファイルの変更後は 再起動が必要です。 /ERROR/404.html これらのファイルは apahce から認識できるところにちゃんとありますか?localhostの場合 http://localhost//ERROR/404.html とすれば見えるはずですが…。ちゃんと見えないのだったら /ERROR に alias の設定が必要と思います。
- yurarinco
- ベストアンサー率34% (20/58)
ErrorDocument 404 /ERROR/404.html ErrorDocument 403 /ERROR/403.html が正解ではないでしょうか?
補足
早速の回答有り難う御座います。 ちゃんと/ERRORにしましたが、まだデフォルトのまま変わりません。何故でしょう・・・ あと、このついでみたいな感じの事ですが、自分で作ったHTMLに「(打ち込まれたURL)はありませんよ」 と表示させるにはどうしたらいいのでしょうか。CGIでやるしかないのでしょうか。
補足
わかりやすくありがとうございます。 この場合は404.cgi(例)として動かさねばならないみたいですが、 var/www/cgi-bin/ 以外ではcgiが動かないようです。 htmlからcgiを呼び出すとか考えたほうがいいのでしょうか?