Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Single ErrorDocument directive to catch all errors (.htaccess)

Is there something like a wildcard directive to catch all possible errors and deal with them in a single custom error page?

ErrorDocument 404 /error.php?code=404
ErrorDocument 403 /error.php?code=403
...
ErrorDocument NNN /error.php?code=NNN #possible use of RegExp?

I know I probably won't be dealing with a lot of custom error pages here, but I'm curious about this.

like image 254
mkvlrn Avatar asked Apr 10 '10 00:04

mkvlrn


4 Answers

That is not possible. You need to have a ErrorDocument directive for each status code you want to handle differently than with the default error handler.

like image 185
Gumbo Avatar answered Oct 27 '22 12:10

Gumbo


For full reference... As far as i could get...

First - .htaccess formatted

Second - Descriptions.

All these i found here -> httpstatuses.com

These are All codes - Not just Errors .. Some will break your site. .

Use like:

ErrorDocument 100 https://EXAMPLE.com

This is the exact copy Paste.. It is not mine, however i reformatted the list.


( Hover for description, Click for detail. )

1×× : Informational

• 100 : Continue
• 101 : Switching Protocols
• 102 : Processing


2×× : Success

• 200 : OK
• 201 : Created
• 202 : Accepted
• 203 : Non-Authoritative Information
• 204 : OK (No Content)
• 205 : Reset Content
• 206 : Partial Content
• 207 : Multi-Status
• 208 : Already Reported
• 226 : IM Used


3×× : Redirection

• 300 : Multiple Choices
• 301 : Moved Permanently
• 302 : Found
• 303 : See Other
• 304 : Not Modified
• 305 : Use Proxy
• 307 : Temporary Redirect
• 308 : Permanent Redirect


4×× : Client Error

• 400 : Bad Request
• 401 : Unauthorized
• 402 : Payment Required
• 403 : Forbidden
• 404 : Not Found
• 405 : Method Not Allowed
• 406 : Not Acceptable
• 407 : Proxy Authentication Required
• 408 : Request Timeout
• 409 : Conflict
• 410 : Gone
• 411 : Length Required
• 412 : Precondition Failed
• 413 : Request Entity Too Large
• 414 : Request-URI Too Long
• 415 : Unsupported Media Type
• 416 : Requested Range Not Satisfiable
• 417 : Expectation Failed
• 418 : I'm a teapot
• 422 : Unprocessable Entity
• 423 : Locked
• 424 : Method Failure
• 426 : Upgrade Required
• 428 : Precondition Required
• 429.") : Too Many Requests
• 431 : Request Header Fields Too Large
• 444 : No Response
• 451 : Unavailable For Legal Reasons
• 499 : Client Closed Request


5×× : Server Error

• 500 : Internal Server Error
• 501 : Not Implemented
• 502 : Bad Gateway
• 503 : Service Unavailable
• 504 : Gateway Timeout
• 505 : HTTP Version Not Supported
• 506 : Variant Also Negotiates
• 507 : Insufficient Storage
• 508 : Loop Detected
• 510 : Not Extended
• 511 : Network Authentication Required
• 599 : Network connect timeout error

(Source)

like image 8
Empire of E Avatar answered Oct 27 '22 14:10

Empire of E


Thanks @gadget-guru you inspired me to build a script to test all errors and built this .htaccess file to catch all errors at once.

ErrorDocument 400 /
ErrorDocument 401 /
ErrorDocument 402 /
ErrorDocument 403 /
ErrorDocument 404 /
ErrorDocument 405 /
ErrorDocument 406 /
ErrorDocument 407 /
ErrorDocument 408 /
ErrorDocument 409 /
ErrorDocument 410 /
ErrorDocument 411 /
ErrorDocument 412 /
ErrorDocument 413 /
ErrorDocument 414 /
ErrorDocument 415 /
ErrorDocument 416 /
ErrorDocument 417 /
ErrorDocument 422 /
ErrorDocument 423 /
ErrorDocument 424 /
ErrorDocument 426 /
ErrorDocument 428 /
ErrorDocument 429 /
ErrorDocument 431 /
ErrorDocument 451 /
ErrorDocument 500 /
ErrorDocument 501 /
ErrorDocument 502 /
ErrorDocument 503 /
ErrorDocument 504 /
ErrorDocument 505 /
ErrorDocument 506 /
ErrorDocument 507 /
ErrorDocument 508 /
ErrorDocument 510 /
ErrorDocument 511 /

this will redirect the user to the main page, but you can choose any page of course. Example:

ErrorDocument 511 /error.html

note that any other error code will break the server causing HTTP 500

like image 5
AK_ Avatar answered Oct 27 '22 12:10

AK_


Rather than passing in the error status code, you can pick it up in your script via the REDIRECT_STATUS environment variable (set by Apache). See: http://httpd.apache.org/docs/2.0/custom-error.html

like image 4
Zhami Avatar answered Oct 27 '22 14:10

Zhami