人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

apacheのErrorDocumentについて
VirtualHost内で
ScriptAlias / /hoge/hoge
のようにしてスクリプトを実行しているのですが、
ErrorDocument 404 /notfound.html
とすると,404のときにexample.com/notfound.htmlにリダイレクトされてしまいます。

ErrorDocumentはスクリプトから配信するのではなくapacheのDocumentRootの/var/www/html/以下を開くようにしたいです。

ScriptAliasでDocumentRootが/になっているのが原因だと思うのですが、
この場合、ErrorDocumentはどのように記述すべきでしょうか?

●質問者: cyrusv
●カテゴリ:コンピュータ インターネット
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● rouge_2008
●50ポイント

ErrorDocumentはすべてまとめてerrorディレクトリに入れてはいかがでしょうか?
リダイレクトされずに(ブラウザのURL欄が変わらず)、エラーページとして指定した内容のページが表示されます。
設定は以下のようにします。

 ErrorDocument 404 /error/notfound.html

ErrorDocumentのHTMLファイルは「/var/www/html/error」内に入れます。


あるいは別の方法として、「ScriptAlias」ではなく「ScriptAliasMatch」を使用しても大丈夫です。
この場合の設定は以下のようにします。

 ScriptAliasMatch ^/(.*\.cgi) "/hoge/hoge/$1"

http://httpd.apache.org/docs/2.1/ja/mod/mod_alias.html#scriptaliasmatch


どちらでも好きな方法を試してみてください。


rouge_2008さんのコメント
「ScriptAliasMatch」を使う場合で、拡張子がcgi以外のファイルも対象の場合は、以下のようにファイル名と拡張子を分けて指定してみてください。 >|| ScriptAliasMatch ^/([^/]*)\.(cgi|pl) "/hoge/hoge/$1.$2" ||<

2 ● y-kawaz
●50ポイント

ScriptAlias / の前に

Alias /notfound.html /var/www/html/notfound.html

もしくは

AliasMatch ^/(.*).html /var/www/html/$1.html

を設定しておく方法もありかなと思います。


rouge_2008さんのコメント
「AliasMatch」を使う場合は、以下のように直接対象のエラーページの名前を指定しないと、普通のHTMLページがループになってしまう可能性がありますね・・・ >|| AliasMatch ^/(notfound|forbidden|servererror).html /var/www/html/$1.html ||< なるべく私が回答No.1で回答したどちらかの方法を使用するのがいいと思います。

rouge_2008さんのコメント
すみません。上記コメントは間違いでした。 エイリアスの場合、ループにはならないんですね。 むしろ上記コメントの記述にした場合、エラーページ以外のHTMLが表示されなくなりました・・・ 大変失礼しました。 ※「Alias」による直接指定も同様の状態になりますので、Aliasによる指定は使用しない方が良さそうです。 なお、「AliasMatch」ですが、回答の記述では「http://example.jp/」や「http://example.jp/category/」等、ディレクトリへのアクセスの場合にページが表示されませんので、以下のようにする必要がありました。 >|| AliasMatch ^/(|.*/|.*\.html)$ /var/www/html/$1 ||< おそらく画像やCSS等もあると思いますので、その場合は以下のようにする必要があります。 >|| AliasMatch ^/(|.*/|.*\.html|.*\.css|.*\.js|.*\.gif|.*\.png|.*\.jpg)$ /var/www/html/$1 ||< スクリプトエイリアスを適用したくない種類のファイルが他にもある場合、上記にさらに追加しなければなりませんので、「ScriptAliasMatch」でCGIファイル等を指定する方が良いように思います。 ※すみません。 「Alias」と「AliasMatch」に関する事ですので、こちらの回答にコメントしました。 (脱字を訂正してサイドコメントしています。)
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ