微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将 www 重定向到 AWS 上的非 www 静态网站

如何解决如何将 www 重定向到 AWS 上的非 www 静态网站

我花了几个小时来解决 AWS 上托管的静态站点从 www 到非 www 版本的重定向问题。

解决方法

您需要将两个 lamda@edge 与 cloudfront 一起使用。

第一个 lambda@edge - CloudFront 事件是查看者请求

exports.handler = (event,context,callback) => {
  const request = event.Records[0].cf.request
  request.headers['x-forwarded-host'] = [
    { key: 'X-Forwarded-Host',value: request.headers.host[0].value }
  ]
  return callback(null,request)
}

第二个 lambda@edge - CloudFront 事件是源请求

exports.handler = function handler(event,callback) {
  const { request } = event.Records[0].cf;
  const { uri } = request;
  const { suffix,appendToDirs,removeTrailingSlash } = config;
  const requestHost = request.headers['x-forwarded-host'][0].value;
  
if (requestHost.startsWith("www.")) {
    const domain_without_www = requestHost.replace("www.","");
    var location = "https://" + domain_without_www + request.uri;
    
    var responseWithRedirect = {
      status: '301',statusDescription: `Redirecting to apex domain`,headers: {
        location: [{
          key: 'Location',value: location
        }]
      }
    };
    callback(null,responseWithRedirect);
    return;

  }
  // or return request unchanged
  callback(null,request);
}

最后一步是将“x-forwarded-host”标头添加到您分发的白名单标头 - 行为部分。

我在 AWS 论坛上找到了这个解决方案,但很难找到。我相信这会对您有所帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。