summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--caddyconfig/httpcaddyfile/directives.go8
-rw-r--r--caddytest/integration/caddyfile_adapt/error_example.txt138
2 files changed, 142 insertions, 4 deletions
diff --git a/caddyconfig/httpcaddyfile/directives.go b/caddyconfig/httpcaddyfile/directives.go
index 800e892..360f91e 100644
--- a/caddyconfig/httpcaddyfile/directives.go
+++ b/caddyconfig/httpcaddyfile/directives.go
@@ -44,9 +44,9 @@ var directiveOrder = []string{
"request_body",
"redir",
- "rewrite",
// URI manipulation
+ "rewrite",
"uri",
"try_files",
@@ -54,23 +54,23 @@ var directiveOrder = []string{
"basicauth",
"request_header",
"encode",
+ "push",
"templates",
// special routing & dispatching directives
"handle",
"handle_path",
"route",
- "push",
// handlers that typically respond to requests
+ "abort",
+ "error",
"respond",
"metrics",
"reverse_proxy",
"php_fastcgi",
"file_server",
"acme_server",
- "abort",
- "error",
}
// directiveIsOrdered returns true if dir is
diff --git a/caddytest/integration/caddyfile_adapt/error_example.txt b/caddytest/integration/caddyfile_adapt/error_example.txt
new file mode 100644
index 0000000..bd42aee
--- /dev/null
+++ b/caddytest/integration/caddyfile_adapt/error_example.txt
@@ -0,0 +1,138 @@
+example.com {
+ root * /srv
+
+ # Trigger errors for certain paths
+ error /private* "Unauthorized" 403
+ error /hidden* "Not found" 404
+
+ # Handle the error by serving an HTML page
+ handle_errors {
+ rewrite * /{http.error.status_code}.html
+ file_server
+ }
+
+ file_server
+}
+----------
+{
+ "apps": {
+ "http": {
+ "servers": {
+ "srv0": {
+ "listen": [
+ ":443"
+ ],
+ "routes": [
+ {
+ "match": [
+ {
+ "host": [
+ "example.com"
+ ]
+ }
+ ],
+ "handle": [
+ {
+ "handler": "subroute",
+ "routes": [
+ {
+ "handle": [
+ {
+ "handler": "vars",
+ "root": "/srv"
+ }
+ ]
+ },
+ {
+ "handle": [
+ {
+ "error": "Unauthorized",
+ "handler": "error",
+ "status_code": 403
+ }
+ ],
+ "match": [
+ {
+ "path": [
+ "/private*"
+ ]
+ }
+ ]
+ },
+ {
+ "handle": [
+ {
+ "error": "Not found",
+ "handler": "error",
+ "status_code": 404
+ }
+ ],
+ "match": [
+ {
+ "path": [
+ "/hidden*"
+ ]
+ }
+ ]
+ },
+ {
+ "handle": [
+ {
+ "handler": "file_server",
+ "hide": [
+ "./Caddyfile"
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ],
+ "terminal": true
+ }
+ ],
+ "errors": {
+ "routes": [
+ {
+ "match": [
+ {
+ "host": [
+ "example.com"
+ ]
+ }
+ ],
+ "handle": [
+ {
+ "handler": "subroute",
+ "routes": [
+ {
+ "group": "group0",
+ "handle": [
+ {
+ "handler": "rewrite",
+ "uri": "/{http.error.status_code}.html"
+ }
+ ]
+ },
+ {
+ "handle": [
+ {
+ "handler": "file_server",
+ "hide": [
+ "./Caddyfile"
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ],
+ "terminal": true
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+} \ No newline at end of file