Configure custom 404 in GAE with Gatsby
require_matching_file: true for not 404, and wildcard routing for 404 to handle the other paths.
- url: /(.*) static_files: public/\1 upload: public/(.*) secure: always require_matching_file: true - url: /(.*) static_files: public/404.html upload: public/404.html secure: always
Routing in GAE
To set routing rules in GoogleAppEngine(GAE), it needs to write app.yaml with following the format app.yaml Configuration File. This blog is a kind of a static site hosted by GAE, and powered by Gatsby.
As you may aware of, this blog has a bunch of slugs such as:
Thus, I need a way to write abstracted rules and also need a route for 404 if there is no exact matching file. In app.yaml, we can use regular expressions so that it can look like
- url: /(.*) static_files: public/\1 upload: public/(.*) secure: always - url: /(.*) static_files: public/404.html upload: public/404.html secure: always
However, this doesn't work well, since the first routing handles all slugs and no request gets into the second one, unfortunately.
How to set routing for 404
As shown at the top of this post, we can use
require_matching_file: true to add non-404 routes and set wildcard routing for 404 to handle the other slugs.
The below is possibly a document about
require_matching_file, although I couldn't find legit documents for StandardEnvironment for Go.
I'm pretty not sure we can rely on this, but it says
Whether this handler should match the request if the file referenced by the handler does not exist.
If there is no file exactly matching to a requested path, the route with
require_matching_file: true will be skipped.