1

ubuntu マシンに apache2 をインストールしました。サブドメインを操作する必要があるため、sites-available に次のような適切なエントリを作成しました。

<VirtualHost *:80>
ServerName xxx.localhost
DocumentRoot /var/www/
</VirtualHost>

mod_rewrite も有効にしました (そして、sites-available/default ファイルで "AllowOverride All" を変更しました) が、それ以外は何も変更されていません。

私の .htaccess ファイルは機能しますが、いくつかのエラー コードを処理したいと考えていました。404 でこれを行うとかなりうまくいきましたが、何らかの理由で他のエラーはうまくいかないようです。エラー 400 の処理に主に関心があります。

ErrorDocument   400 /400.php
ErrorDocument   404 /404.php

他に見るべきものはありますか?他のエラーコードが許可されていないのに 404 が許可されている場所を見つけることができなかったようです。

4

2 に答える 2

3

PHP が 400 エラーを返す場合、PHP はエラー ドキュメントを生成する必要があります。

次のようなものを使用します。

if( $someError )
{
  http_response_code(400);
  include("{$_SERVER['DOCUMENT_ROOT']}/400.php");
  exit();
}
于 2012-12-22T21:21:32.333 に答える
1

Apacheのドキュメントから:

ほとんどのエラーメッセージは上書きできますが、ErrorDocumentの設定に関係なく、内部メッセージが使用される特定の状況があります。特に、不正な形式のリクエストが検出された場合、通常のリクエスト処理はただちに停止され、内部エラーメッセージが返されます。これは、不正なリクエストによって引き起こされるセキュリティの問題を防ぐために必要です。

に直接追加して、httpd.confApacheを再起動してみてください。

于 2012-12-01T01:55:50.410 に答える