検索

ホームページ  >  に質問  >  本文

「.htaccess の ErrorDocument 404 は RewriteRule と互換性がないため、機能障害が発生します。」

.htaccess ErrorDocument 404 書き換えルールを使用する場合、リダイレクトはありません。 500 内部サーバー エラーが発生します。

#RewriteRule を使用しない場合、ErrorDocument は正常に動作します。

私のコード ああああ

P粉320361201P粉320361201329日前328

全員に返信(1)返信します

  • P粉605233764

    P粉6052337642024-01-11 09:26:16

    このルールの「問題」は、存在しないファイルをリクエストし、そのファイルが /subdirectory/ サブディレクトリに存在しない場合、無限の書き換えループが発生することです (したがって、500内部サーバー エラーを参照)、次の書き換えが試行されるためです:

    • /存在しない (最初のリクエスト)
    • /stores/not-exists (最初の書き換え)
    • /stores/stores/not-exists (2 回目の書き換え)
    • /stores/stores/stores/not-exists (3 回目の書き換え)
    • ###等。
    実際に何を達成しようとしていたのかは明記されていませんが、/stores は「隠し」サブディレクトリであり、/stores サブディレクトリ内の実際のファイルに上書きするつもりだったのではないかと思います。これは、このようなルールが Apache で定義された ErrorDocument 404 ディレクティブで機能する唯一の方法です。

    したがって、/stores サブディレクトリに書き換える場合は、書き換えを発行する前に、リクエストが実際のファイルにマップされるかどうかを確認する必要があります。このようにして、存在せず、/stores サブディレクトリにマップされていないファイルに対するリクエストはすべて、Apache 定義の 404 ErrorDocument に渡されます。

    たとえば、次のコードを使用してみてください:

    リーリー

    <IfModule> コンテナは必要ありません (ただし、RewriteEngine ディレクティブをこのコンテナの外に置くため、意味がありません)。

    .htaccess ファイルがドキュメントのルート ディレクトリにある場合、RewriteBase ディレクティブは必要ありません。

    構造的には、最初に ErrorDocument を定義するのが最善です。

    返事
    0
  • キャンセル返事