Browse Source
We realized we made some mistakes with the directive ordering, so we're making some minor adjustments. `abort` and `error` don't really make sense to be after other handler directives, because you would expect to be able to "fail-fast" and throw an error before falling through to some `file_server` or `respond` typically. So we're moving them up to just before `respond`, i.e. before the common handler directives. This is also more consistent with our existing examples in the docs, which actually didn't work due to the directive ordering. See https://caddyserver.com/docs/caddyfile/directives/error#examples Also, `push` doesn't quite make sense to be after `handle`/`route`, since its job is to read from response headers to push additional resources if necessary, and `handle`/`route` may be terminal so push would not be reached if it was declared outside those. And also, it would make sense to be _before_ `templates` because a template _could_ add a `Link` header to the response dynamically.master
Francis Lavoie
3 years ago
committed by
GitHub
2 changed files with 142 additions and 4 deletions
@ -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 |
|||
} |
|||
] |
|||
} |
|||
} |
|||
} |
|||
} |
|||
} |
|||
} |
Loading…
Reference in new issue