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?

MrWhite
  • 11,643
  • 4
  • 25
  • 40
Paul
  • 180
  • 1
  • 1
  • 7

1 Answers1

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.

Ivan Chuchman
  • 322
  • 1
  • 3