Better redirects handling
This commit is contained in:
parent
b0cd227f25
commit
cfa661f84f
1 changed files with 6 additions and 8 deletions
14
src/index.ts
14
src/index.ts
|
@ -1,7 +1,7 @@
|
|||
import { getAssetFromKV, mapRequestToAsset } from '@cloudflare/kv-asset-handler';
|
||||
import { onGe0Decode } from './ge0';
|
||||
|
||||
const NOT_FOUND_REDIRECT_URL = 'https://organicmaps.app/';
|
||||
const NOT_FOUND_REDIRECT_URL = 'https://organicmaps.app';
|
||||
const GE0_TEMPLATE_URL = '/ge0.html';
|
||||
|
||||
addEventListener('fetch', (event) => {
|
||||
|
@ -12,12 +12,16 @@ addEventListener('fetch', (event) => {
|
|||
event.respondWith(new Response(e.message || e.toString(), { status: 500 }));
|
||||
} else {
|
||||
// In case of unexpected errors, always redirect to the default url.
|
||||
event.respondWith(onRedirect(NOT_FOUND_REDIRECT_URL));
|
||||
event.respondWith(Response.redirect(NOT_FOUND_REDIRECT_URL, 302));
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
async function handleFetchEvent(event: FetchEvent) {
|
||||
const { hostname, pathname } = new URL(event.request.url);
|
||||
if (hostname === 'omaps.app' && pathname === '/')
|
||||
return Response.redirect(NOT_FOUND_REDIRECT_URL, 301);
|
||||
|
||||
// See https://github.com/cloudflare/kv-asset-handler#optional-arguments
|
||||
const getAssetOptions: {
|
||||
cacheControl?: { bypassCache: boolean };
|
||||
|
@ -34,10 +38,8 @@ async function handleFetchEvent(event: FetchEvent) {
|
|||
return await getAssetFromKV(event, getAssetOptions);
|
||||
} catch (_) { }
|
||||
// No static resource were found, try to handle a specific dynamic request.
|
||||
const { pathname } = new URL(event.request.url);
|
||||
// Filter empty pathname elements.
|
||||
const params = pathname.split('/').filter(Boolean);
|
||||
if (params.length === 0) return onRedirect(NOT_FOUND_REDIRECT_URL);
|
||||
|
||||
getAssetOptions.mapRequestToAsset = (request: Request) => {
|
||||
const url = new URL(request.url);
|
||||
|
@ -48,7 +50,3 @@ async function handleFetchEvent(event: FetchEvent) {
|
|||
const ge0HtmlTemplate = await resp.text();
|
||||
return onGe0Decode(ge0HtmlTemplate, params[0], params.length >= 2 ? params[1] : undefined);
|
||||
}
|
||||
|
||||
function onRedirect(url: string) {
|
||||
return Response.redirect(url, 301);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue