My apache VirtualHost contains an ErrorDocument directive:

<VirtualHost *:80>
  ServerName test
  DocumentRoot /var/www/html/test/
  ErrorDocument 404 /error/404.txt

The file /var/www/html/test/error/404.txt does exist.

When trying to access a non-existing file, I get an error-in-a-error message from apache:

The requested URL /foo was not found on this server.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.

The error log contains:

[error] File does not exist: /var/www/html/test/foo [error] File does not exist: /var/www/error/404.txt

Why does apache make the error document path relative to /var/www (apache user's home dir) instead of relative to the virtual host's DocumentRoot, as described in the docs?

URLs can begin with a slash (/) for local web-paths (relative to the DocumentRoot), ...

This happens with Apache 2.2 on CentOS 6.7.


The reason for this error was the default configuration:

Alias /error/ "/var/www/error/"

Removing this line made it work.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.