const INDEX_DOCUMENT = 'index.html' const ERROR_DOCUMENT = '404.html' addEventListener('fetch', event => { event.respondWith(handleRequest(event.request)) }) /** * @param {Request} request */ async function handleRequest(request) { const url = new URL(request.url) if (url.pathname.endsWith('/')) { url.pathname = `${url.pathname}${INDEX_DOCUMENT}` request = new Request(url, request) } let response = await fetch(request) if (response.status === 404) { url.pathname = ERROR_DOCUMENT request = new Request(url, request) response = await fetch(request) response = new Response(response.body, { status: 404, statusText: 'Not Found', headers: response.headers }) } return response }