Rerouting
ematipico opened this issue · 2 comments
- Accepted Date: 2024-04-16
- Reference Issues/Discussions: #681
- Author: @lilnasy
- Champion(s): @ematipico @lilnasy
- Implementation PR:
Summary
Programmatic control over routing.
Background & Motivation
As astro grows in popularity, it is being used for more and more use cases. One of these is multitenant websites where a tenant may be given a subdomain. This proposal introduces a powerful primitive that allows astro users to build websites with complex routing requirements. Rather than a limitation, file-based routing is now a sensible default!
Goals
- Defuse.
- Make it unnecessary to rely on implicit routing rules
- Introduce framework-designed 404 and 500 pages
- Make middleware run for requests that don't match a route (with framework-designed error pages)
Non-Goals
- Reroute to an external service.
- Support for
functionPerRoute
Framework designed error pages
Should be possible to set in any way using an API not file based routing. Example Astro.set404Page(({ props, context }) => Astro.render("ErrorPage.astro", { props, context })))
to make 404 page. props
is for SSG and SSR and context
for only SSR.
Separate templating
Function like Astro.render("Page.astro", { props, context }))
to output html anywhere even outside astro. You could use astro templates in other frameworks like express and use other templating engines in astro just like any SSR framework.
Pluggable router
Hono framework offer different routers https://hono.dev/concepts/routers for full speed and flexibility.
Stage 3 RFC available in #901