web-dev-qa-db-ja.com

ErrorDocumentを使用して要求を処理しようとすると、500内部サーバーエラーが発生します

私はこの.htaccessファイルを持っています:

Options -Indexes
RewriteEngine on

ErrorDocument 404 /404.php

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([^/]*)/?(.*)$ ./$1.php

RewriteCond %{THE_REQUEST} \.php
RewriteRule ^(.*)$ - [L,R=404]

ただし、localhost/example.php、500内部サーバーエラーを返します。

助けてください?ありがとう。

編集:

表示される完全なエラーメッセージは次のとおりです。

Not Found

The requested URL /example.php was not found on this server.

Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument to handle the request.
11
user3130907

ほとんどの場合、ループエラーのために500を取得しています。

最後のルールから404.phpを除外する:

ErrorDocument 404 /404.php

Options -Indexes -MultiViews
RewriteEngine on

RewriteCond %{THE_REQUEST} \.php [NC]
RewriteRule ^(?!404\.php)$ - [L,NC,R=404]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([^/]+)/?(.*)$ ./$1.php [L]
5
anubhava

404.phpは実際にファイルシステムのルートに設定されていますか?

私は推測していない。

../404.phpのようなものを試してください

ところで:あなたのApacheログファイルを見ましたか?

3
nl-x

ページで.php拡張子を非表示にする場合は、次を実行して.htaccessファイルからその拡張子を削除してください。

変更:ErrorDocument 404 /404.phpからErrorDocument 404/404

お役に立てれば。

JJ

0
user4483327