4

I've edited my .htaccess file to the following :

ErrorDocument 404 /index.php?page=page-not-found
ErrorDocument 400 /index.php?page=bad-request

Now the error 404 redirects correctly, yet if I enter an address like http://example.com/%22%%5E$%%5E&%C2%A3& the server doesn't redirect the 400 error, but displays the default apache message. What am I doing wrong?

1 Answer 1

6

Quotation from Apache documentation:

Although most error messages can be overriden, there are certain circumstances where the internal messages are used regardless of the setting of ErrorDocument. In particular, if a malformed request is detected, normal request processing will be immediately halted and the internal error message returned. This is necessary to guard against security problems caused by bad requests.

So, if you want redirect error 400 you should uncomment ErrorDocument directive in httpd.conf Apache configuration file as follows:

# Some examples:
#ErrorDocument 500 http://foo.example.com/cgi-bin/tester
ErrorDocument 400 /cgi-bin/bad_request.pl
#ErrorDocument 401 /subscription_info.html
#ErrorDocument 403 "Sorry can't allow you access today" 

and restart Apache server.

2
  • And don't forget to replace /cgi-bin/bad_request.pl listed above to your error page =) Jul 7, 2010 at 11:38
  • thanks a ton...spent a whole day trying to find the cause :(
    – web-nomad
    Sep 4, 2013 at 15:39

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .