Merge pull request #21453 from dvdksn/handle-double-trailing-slash

lambda: collapse redundant slashes in requests
This commit is contained in:
David Karlsson 2024-11-18 15:22:42 +01:00 committed by GitHub
commit 2510166fab
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 5 additions and 3 deletions

View File

@ -3,15 +3,16 @@
exports.handler = (event, context, callback) => { exports.handler = (event, context, callback) => {
//console.log("event", JSON.stringify(event)); //console.log("event", JSON.stringify(event));
const request = event.Records[0].cf.request; const request = event.Records[0].cf.request;
const requestUrl = request.uri.replace(/\/$/, "") // Trim trailing slash and collapse redundant slashes
const normalizedUri = request.uri.replace(/\/$/, "").replaceAll(/\/{2,}/g, "/")
const redirects = JSON.parse(`{{.RedirectsJSON}}`); const redirects = JSON.parse(`{{.RedirectsJSON}}`);
for (let key in redirects) { for (let key in redirects) {
const redirectTarget = key.replace(/\/$/, "") const redirectTarget = key.replace(/\/$/, "")
if (redirectTarget !== requestUrl) { if (redirectTarget !== normalizedUri) {
continue; continue;
} }
//console.log(`redirect: ${requestUrl} to ${redirects[key]}`); //console.log(`redirect: ${normalizedUri} to ${redirects[key]}`);
const response = { const response = {
status: '301', status: '301',
statusDescription: 'Moved Permanently', statusDescription: 'Moved Permanently',
@ -52,5 +53,6 @@ exports.handler = (event, context, callback) => {
return return
} }
request.uri = normalizedUri
callback(null, request); callback(null, request);
}; };