{ "version": 3, "pages404": true, "caseSensitive": false, "basePath": "", "redirects": [ { "source": "/:path+/", "destination": "/:path+", "internal": true, "statusCode": 308, "regex": "^(?:/((?:[^/]+?)(?:/(?:[^/]+?))*))/$" } ], "headers": [ { "source": "/(.*)", "headers": [ { "key": "Content-Security-Policy", "value": " default-src 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline' giscus.app analytics.umami.is; style-src 'self' 'unsafe-inline'; img-src * blob: data:; media-src *.s3.amazonaws.com; connect-src *; font-src 'self'; frame-src giscus.app" }, { "key": "Referrer-Policy", "value": "strict-origin-when-cross-origin" }, { "key": "X-Frame-Options", "value": "DENY" }, { "key": "X-Content-Type-Options", "value": "nosniff" }, { "key": "X-DNS-Prefetch-Control", "value": "on" }, { "key": "Strict-Transport-Security", "value": "max-age=31536000; includeSubDomains" }, { "key": "Permissions-Policy", "value": "camera=(), microphone=(), geolocation=()" } ], "regex": "^(?:/(.*))(?:/)?$" } ], "dynamicRoutes": [ { "page": "/blog/page/[page]", "regex": "^/blog/page/([^/]+?)(?:/)?$", "routeKeys": { "nxtPpage": "nxtPpage" }, "namedRegex": "^/blog/page/(?[^/]+?)(?:/)?$" }, { "page": "/blog/[...slug]", "regex": "^/blog/(.+?)(?:/)?$", "routeKeys": { "nxtPslug": "nxtPslug" }, "namedRegex": "^/blog/(?.+?)(?:/)?$" }, { "page": "/tags/[tag]", "regex": "^/tags/([^/]+?)(?:/)?$", "routeKeys": { "nxtPtag": "nxtPtag" }, "namedRegex": "^/tags/(?[^/]+?)(?:/)?$" }, { "page": "/tags/[tag]/page/[page]", "regex": "^/tags/([^/]+?)/page/([^/]+?)(?:/)?$", "routeKeys": { "nxtPtag": "nxtPtag", "nxtPpage": "nxtPpage" }, "namedRegex": "^/tags/(?[^/]+?)/page/(?[^/]+?)(?:/)?$" } ], "staticRoutes": [ { "page": "/", "regex": "^/(?:/)?$", "routeKeys": {}, "namedRegex": "^/(?:/)?$" }, { "page": "/_not-found", "regex": "^/_not\\-found(?:/)?$", "routeKeys": {}, "namedRegex": "^/_not\\-found(?:/)?$" }, { "page": "/about", "regex": "^/about(?:/)?$", "routeKeys": {}, "namedRegex": "^/about(?:/)?$" }, { "page": "/blog", "regex": "^/blog(?:/)?$", "routeKeys": {}, "namedRegex": "^/blog(?:/)?$" }, { "page": "/projects", "regex": "^/projects(?:/)?$", "routeKeys": {}, "namedRegex": "^/projects(?:/)?$" }, { "page": "/robots.txt", "regex": "^/robots\\.txt(?:/)?$", "routeKeys": {}, "namedRegex": "^/robots\\.txt(?:/)?$" }, { "page": "/sitemap.xml", "regex": "^/sitemap\\.xml(?:/)?$", "routeKeys": {}, "namedRegex": "^/sitemap\\.xml(?:/)?$" }, { "page": "/tags", "regex": "^/tags(?:/)?$", "routeKeys": {}, "namedRegex": "^/tags(?:/)?$" } ], "dataRoutes": [], "rsc": { "header": "RSC", "varyHeader": "RSC, Next-Router-State-Tree, Next-Router-Prefetch, Next-Router-Segment-Prefetch", "prefetchHeader": "Next-Router-Prefetch", "didPostponeHeader": "x-nextjs-postponed", "contentTypeHeader": "text/x-component", "suffix": ".rsc", "prefetchSuffix": ".prefetch.rsc", "prefetchSegmentHeader": "Next-Router-Segment-Prefetch", "prefetchSegmentSuffix": ".segment.rsc", "prefetchSegmentDirSuffix": ".segments" }, "rewriteHeaders": { "pathHeader": "x-nextjs-rewritten-path", "queryHeader": "x-nextjs-rewritten-query" }, "rewrites": [] }