Skip to content

Commit 1a063d5

Browse files
vishrclaude
andcommitted
feat(docs): preserve all live URLs at cutover (redirects + CNAME)
The old Docusaurus site served docs under /docs/... (guide pages flattened via slug overrides). Add an Astro `redirects` map covering all 64 live echo.labstack.com URLs -> their new locations, so nothing 404s after cutover and SEO/backlinks survive. Astro emits a static meta-refresh page per entry, which works on GitHub Pages (no _redirects file needed). Also add site/public/CNAME so the custom domain survives when the deploy target switches from website/ to site/ at cutover. Verified: 64/64 live sitemap URLs resolve in the build (page or redirect). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 96f8e0b commit 1a063d5

2 files changed

Lines changed: 69 additions & 0 deletions

File tree

site/astro.config.mjs

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,74 @@ import starlight from '@astrojs/starlight';
44
// https://astro.build/config
55
export default defineConfig({
66
site: 'https://echo.labstack.com',
7+
// Preserve every live Docusaurus URL at cutover. The old site served docs under
8+
// /docs/... (flattened guide pages via slug overrides); Astro generates a static
9+
// meta-refresh page per entry (works on GitHub Pages — no _redirects needed).
10+
redirects: {
11+
'/docs': '/guide/quickstart/',
12+
'/docs/binding': '/guide/binding/',
13+
'/docs/category/cookbook': '/cookbook/hello-world/',
14+
'/docs/category/guide': '/guide/quickstart/',
15+
'/docs/category/middleware': '/middleware/basic-auth/',
16+
'/docs/cookbook/auto-tls': '/cookbook/auto-tls/',
17+
'/docs/cookbook/cors': '/cookbook/cors/',
18+
'/docs/cookbook/crud': '/cookbook/crud/',
19+
'/docs/cookbook/embed-resources': '/cookbook/embed-resources/',
20+
'/docs/cookbook/file-download': '/cookbook/file-download/',
21+
'/docs/cookbook/file-upload': '/cookbook/file-upload/',
22+
'/docs/cookbook/graceful-shutdown': '/cookbook/graceful-shutdown/',
23+
'/docs/cookbook/hello-world': '/cookbook/hello-world/',
24+
'/docs/cookbook/http2': '/cookbook/http2/',
25+
'/docs/cookbook/http2-server-push': '/cookbook/http2-server-push/',
26+
'/docs/cookbook/jsonp': '/cookbook/jsonp/',
27+
'/docs/cookbook/jwt': '/cookbook/jwt/',
28+
'/docs/cookbook/load-balancing': '/cookbook/load-balancing/',
29+
'/docs/cookbook/middleware': '/cookbook/middleware/',
30+
'/docs/cookbook/reverse-proxy': '/cookbook/reverse-proxy/',
31+
'/docs/cookbook/sse': '/cookbook/sse/',
32+
'/docs/cookbook/streaming-response': '/cookbook/streaming-response/',
33+
'/docs/cookbook/subdomain': '/cookbook/subdomain/',
34+
'/docs/cookbook/timeout': '/cookbook/timeout/',
35+
'/docs/cookbook/websocket': '/cookbook/websocket/',
36+
'/docs/cookies': '/guide/cookies/',
37+
'/docs/customization': '/guide/customization/',
38+
'/docs/error-handling': '/guide/error-handling/',
39+
'/docs/ip-address': '/guide/ip-address/',
40+
'/docs/middleware/basic-auth': '/middleware/basic-auth/',
41+
'/docs/middleware/body-dump': '/middleware/body-dump/',
42+
'/docs/middleware/body-limit': '/middleware/body-limit/',
43+
'/docs/middleware/casbin-auth': '/middleware/casbin-auth/',
44+
'/docs/middleware/context-timeout': '/middleware/context-timeout/',
45+
'/docs/middleware/cors': '/middleware/cors/',
46+
'/docs/middleware/csrf': '/middleware/csrf/',
47+
'/docs/middleware/decompress': '/middleware/decompress/',
48+
'/docs/middleware/gzip': '/middleware/gzip/',
49+
'/docs/middleware/jwt': '/middleware/jwt/',
50+
'/docs/middleware/key-auth': '/middleware/key-auth/',
51+
'/docs/middleware/logger': '/middleware/logger/',
52+
'/docs/middleware/method-override': '/middleware/method-override/',
53+
'/docs/middleware/open-telemetry': '/middleware/open-telemetry/',
54+
'/docs/middleware/prometheus': '/middleware/prometheus/',
55+
'/docs/middleware/proxy': '/middleware/proxy/',
56+
'/docs/middleware/rate-limiter': '/middleware/rate-limiter/',
57+
'/docs/middleware/recover': '/middleware/recover/',
58+
'/docs/middleware/redirect': '/middleware/redirect/',
59+
'/docs/middleware/request-id': '/middleware/request-id/',
60+
'/docs/middleware/rewrite': '/middleware/rewrite/',
61+
'/docs/middleware/secure': '/middleware/secure/',
62+
'/docs/middleware/session': '/middleware/session/',
63+
'/docs/middleware/static': '/middleware/static/',
64+
'/docs/middleware/trailing-slash': '/middleware/trailing-slash/',
65+
'/docs/quick-start': '/guide/quickstart/',
66+
'/docs/request': '/guide/request/',
67+
'/docs/response': '/guide/response/',
68+
'/docs/routing': '/guide/routing/',
69+
'/docs/start-server': '/guide/customization/',
70+
'/docs/static-files': '/guide/static-files/',
71+
'/docs/templates': '/guide/templates/',
72+
'/docs/testing': '/guide/testing/',
73+
'/search': '/',
74+
},
775
integrations: [
876
starlight({
977
title: 'Echo',

site/public/CNAME

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
echo.labstack.com

0 commit comments

Comments
 (0)