-
-
Notifications
You must be signed in to change notification settings - Fork 2.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Custom 404 pages in localized sites #12175
Comments
I don't think this is something that it's possible for Astro to do. Because a 404 could happen on any invalid path, you can't handle it with file-based routing. To get around this, many static hosts simply look for a If you really wanted, you could make a middleware (which will execute on every request) that would check if the slug exists, and serve the correct 404 page based on the user's language. This would, however, require you to use |
This is the issue to be solved, I think. I understand that Astro can't know at build time what language someone is going to be using when they hit a nonexistent route (that makes no sense), but currently putting a Of course, you can work around this by adding it to |
This is fixed |
Astro Info
If this issue only occurs in one browser, which browser is a problem?
No response
Describe the Bug
I'm using Astro's i18n options to create a localized site in 4 languages: en, ja, zh, ko. A hard requirement for my use case is that we use the
prefixDefaultLocale: true
setting to ensure that the default locale (en) always appears in the path just like the others.One thing I need is the ability to create a custom 404 page that gives users instructions on what to do next when they reach a page that doesn't exist. Before I updated to the multi-folder structure, this was achievable by placing a
404.astro
in thepages
directory. However, this page was not localized properly due to there not being any locale detection present. Since moving to the new folder-based hierarchy, I noticed that the404.astro
doesn't appear in thedist
folder after runningastro build
.Adding a custom
404.astro
topages/[lang]
works if you visit the slug directly (e.g./en/404
), but it doesn't work when actually hitting a 404. I've managed to override this in Vercel by putting in a Vercel redirect that takes any 404 to the/en/404
route then using some client side scripting to push the user to the correct page.What's the expected result?
I would like to be able to create a custom
404.astro
inpages
that routes to the custom404.astro
inpages/[lang]
so that localized 404 pages may be served. Ideally, it would be good to control this viaastro.config.mjs
. Having the ability to simply set up locale-based routing to the major pages likeindex.astro
and404.astro
would save a lot of time.Link to Minimal Reproducible Example
https://stackblitz.com/edit/astro-no-localized-404
Participation
The text was updated successfully, but these errors were encountered: