javascript 使用AWS Lambda重定向到CloudFront上的尾部斜杠。 (所有这一切都因为S3使用302重定向而不是301)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript 使用AWS Lambda重定向到CloudFront上的尾部斜杠。 (所有这一切都因为S3使用302重定向而不是301)相关的知识,希望对你有一定的参考价值。

'use strict';

const path = require('path')

exports.handler = (event, context, callback) => {
    //get request object
    const { request } = event.Records[0].cf

    const url = request.uri;

    //we need to determine if this request has an extension.
    const extension = path.extname(url);

    //path.extname returns an empty string when there's no extension.
    //if there is an extension on this request, continue without doing anything!
    if(extension && extension.length > 0){
        return callback(null, request);
    }
    
    //there is no extension, so that means we want to add a trailing slash to the url.
    //let's check if the last character is a slash.
    const last_character = url.slice(-1);
    
    //if there is already a trailing slash, return.
    if(last_character === "/"){
        return callback(null, request);
    }

    //add a trailing slash.    
    const new_url = `${url}/`;
    
    //debug.
    console.log(`Rewriting ${url} to ${new_url}...`);

    //create HTTP redirect...
    const redirect = {
        status: '301',
        statusDescription: 'Moved Permanently',
        headers: {
            location: [{
                key: 'Location',
                value: new_url,
            }],
        },
    };
    
    return callback(null, redirect);
};

以上是关于javascript 使用AWS Lambda重定向到CloudFront上的尾部斜杠。 (所有这一切都因为S3使用302重定向而不是301)的主要内容,如果未能解决你的问题,请参考以下文章

AWS Lambda - Nodejs:分配失败 - JavaScript 堆内存不足

javascript AWS Lambda测试

AWS Lambda 函数总是返回 null (Node/Javascript)?

您是否可以使用除Javascript以外的语言使用Lambda @ Edge修改AWS CloudFront事件的URI?

javascript 使用AWS Lambda重定向到CloudFront上的尾部斜杠。 (所有这一切都因为S3使用302重定向而不是301)

JavaScript:在AWS Lambda Node应用程序中将RSS转换为JSON