Skip to content
Advertisement

500 Internal Server Error when trying to use ErrorDocument to handle request

I have this .htaccess file:

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]

However, when I go to localhost/example.php, it returns a 500 Internal Server Error.

Any help please? Thanks.

EDIT:

The full error message that comes up is:

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.

Advertisement

Answer

You’re most likely getting 500 due to looping error.

Exclude 404.php from last rule as:

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]
User contributions licensed under: CC BY-SA
8 People found this is helpful
Advertisement