Apache ErrorDocumentsを通常のhttpリクエストにアクセスできないようにする方法は?

Apache ErrorDocumentsを通常のhttpリクエストにアクセスできないようにする方法は?

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とErrorDocumentsは、要求されたURLを代わりに表示できますErrorDocument。したがって、命名スキームを推測できない場合は、直接アクセスできません。

クライアントは404200 / OKの代わりに1つ以上の適切なHTTPステータスコードを受信し続けます。

Apacheは要求を404として記録し、この方法で記録するように設定されている場合は要求されたURLを表示します。

(指示を追加する代わりに)デフォルト設定を使用して、DebianおよびUbuntuシステムでapache2.4.xのデフォルトインストールをテストしましたErrorDocument 404 /test.html

おすすめ記事