154 lines
3.9 KiB
JSON
154 lines
3.9 KiB
JSON
{
|
|
"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/(?<nxtPpage>[^/]+?)(?:/)?$"
|
|
},
|
|
{
|
|
"page": "/blog/[...slug]",
|
|
"regex": "^/blog/(.+?)(?:/)?$",
|
|
"routeKeys": {
|
|
"nxtPslug": "nxtPslug"
|
|
},
|
|
"namedRegex": "^/blog/(?<nxtPslug>.+?)(?:/)?$"
|
|
},
|
|
{
|
|
"page": "/tags/[tag]",
|
|
"regex": "^/tags/([^/]+?)(?:/)?$",
|
|
"routeKeys": {
|
|
"nxtPtag": "nxtPtag"
|
|
},
|
|
"namedRegex": "^/tags/(?<nxtPtag>[^/]+?)(?:/)?$"
|
|
},
|
|
{
|
|
"page": "/tags/[tag]/page/[page]",
|
|
"regex": "^/tags/([^/]+?)/page/([^/]+?)(?:/)?$",
|
|
"routeKeys": {
|
|
"nxtPtag": "nxtPtag",
|
|
"nxtPpage": "nxtPpage"
|
|
},
|
|
"namedRegex": "^/tags/(?<nxtPtag>[^/]+?)/page/(?<nxtPpage>[^/]+?)(?:/)?$"
|
|
}
|
|
],
|
|
"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": []
|
|
} |