Single ErrorDocument directive to catch all errors (.htaccess)

青春壹個敷衍的年華 提交于 2019-11-27 17:06:55

问题


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.


回答1:


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.




回答2:


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




回答3:


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)




回答4:


I don't found a way to handle all ErrorDocument's with one line. But you dont have to write out all the redirects. You can pass the ErrorCode in PHP with:

$response_code = http_response_code()

My .htaccess looks like

ErrorDocument 401 /error.php
ErrorDocument 402 /error.php
ErrorDocument 403 /error.php
ErrorDocument 404 /error.php
ErrorDocument 500 /error.php


来源:https://stackoverflow.com/questions/2611748/single-errordocument-directive-to-catch-all-errors-htaccess

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!