Apacheドキュメント説明する、さまざまなHTTPエラーのカスタムエラーページを設定し、ステータスコード(401、403、404、500、503など)でエラーを識別する方法について説明します。
ただし、文書の内容は本質的に次のとおりです。エラーが発生すると、Apache はドキュメントの内部サブリクエストを生成します。
例えば、
ErrorDocument 404 /errors/dunno.html
ErrorDocument 500 /errors/sux.html
この行は、404(ファイルが見つかりません)または500(内部サーバー)エラーが発生した場合に文書が提供されるようにします/errors/dunno.html
。/errors/sux.html
ただし、これはhttpリクエストがhttps://my.server/errors/sux.html
通常のファイルとして提供されることを意味します。sux.html
これは私が望むものではありません。
エラーページがサーバーの外部に存在し、DocumentRoot
一般的なhttpクエリを使用して完全にアクセスできないことを願っています。唯一のケースは、ApacheがErrorDocument
設定ディレクティブの影響を受ける(200以外)http応答を提供する必要がある場合です。
何とかできますか?
ベストアンサー1
実際にテストしてみましたかErrorDocument
?このことをしながら感じたことの二つ。
偽のURLに基づいてAPIを設定しようとしています。ここで、404 errordocは、要求されたURLを解析してコンテンツを返すデフォルトのAPI PHPスクリプトです。ブラウザでは正常に動作します。表示されたURLはErrorDocument
。
しかし、AngularJSは、メッセージの内容が要求されたjsonであるにもかかわらず、404ステータスコードについて文句を言います。
だから...
ApacheとErrorDocument
sは、要求されたURLを代わりに表示できますErrorDocument
。したがって、命名スキームを推測できない場合は、直接アクセスできません。
クライアントは404
200 / OKの代わりに1つ以上の適切なHTTPステータスコードを受信し続けます。
Apacheは要求を404として記録し、この方法で記録するように設定されている場合は要求されたURLを表示します。
(指示を追加する代わりに)デフォルト設定を使用して、DebianおよびUbuntuシステムでapache2.4.xのデフォルトインストールをテストしましたErrorDocument 404 /test.html
。