NextraをVercelでホストして、サブディレクトリで公開するためのCloudflare Worker
最終的に/nextraで公開したいので、baseUrlとassetPrefixをnextjs.config.tsで設定する
デプロイ先
Cloudflare Workersでorginを書き換えるスクリプトを書いて
Worker Routesで以下のパターンにマッチするときにWorkerが走るようにする
Cloudflare Workers
code:ts
export default {
async fetch(request) {
async function MethodNotAllowed(request) {
return new Response(Method ${request.method} not allowed., {
status: 405,
headers: {
Allow: "GET",
},
});
}
if (request.method !== "GET") return MethodNotAllowed(request);
const url = new URL(request.url);
let originUrl;
if (url.pathname === "/nextra" || url.pathname === "/nextra/") {
} else {
originUrl = url.toString().replace(
);
}
console.log("Rewritten URL:", originUrl);
const originPage = await fetch(originUrl);
let responseText = await originPage.text();
// responseText = responseText.replace(/href="\/_next\//g, 'href="/nextra/_next/');
return new Response(responseText, originPage);
},
};