You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用AWS Lambda重定向至其他域名并保留请求路径?

实现带路径保留的Serverless API重定向

要实现将http://oldwebsite.com/aaa这类请求重定向到http://newwebsite.com/aaa,核心是从请求中提取原路径并拼接至新域名,以下是具体实现步骤:

1. 修改Lambda函数逻辑

Lambda需要获取API Gateway传递的请求路径,再拼接成完整的重定向URL。基于官方示例修改后的Node.js代码如下:

exports.handler = (event, context) => {
    // 从event中获取原请求的路径(如"/aaa")
    const originalPath = event.path;
    // 目标新域名
    const targetDomain = "http://newwebsite.com";
    // 拼接带原路径的完整重定向地址
    const redirectUrl = `${targetDomain}${originalPath}`;

    // 构造重定向错误对象(遵循官方约定)
    const redirectError = new Error("Resource moved permanently");
    redirectError.name = redirectUrl; // 重定向目标URL
    redirectError.statusCode = 301; // 301永久重定向,换成302则为临时重定向

    context.done(redirectError, {});
};

2. 确保API Gateway传递路径参数

要让Lambda能拿到event.path,需要配置API Gateway为Lambda代理集成:

  • 在API Gateway的资源配置中,选择集成类型为"Lambda函数代理"
  • 这种集成模式会自动将请求的路径、查询参数、headers等信息封装到event对象中,无需手动配置映射模板

如果使用非代理集成,需要在集成请求的映射模板中添加"path": "$context.path",确保路径参数被传递到Lambda。

关键说明

  • event.path包含请求的完整路径(以/开头),直接拼接新域名即可保留原路径结构
  • 通过err.statusCode指定重定向类型:301为永久重定向(适合域名更换场景),302为临时重定向
  • 官方的错误对象重定向机制中,err.name会被API Gateway识别为Location响应头的值

内容的提问来源于stack exchange,提问作者neubert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 13:48:15