如何用s3网站重定向内部URL,使其以斜杠结尾



我有一个在s3中托管的网站,该网站使用cloudfront进行缓存。我想将我的内部页面重定向到末尾有尾斜杠的页面,当前情况是两个版本(有尾斜杠和没有尾斜杠(都在工作,应该只使用尾斜杠,例如:https://us.springverify.com/api-integrations/所有内部页面。域在Route53中。由于在S3中,我将无法使用.htaccess文件重定向。有没有什么方法可以让我从cloudfront或S3进行重定向(AWS说他们不能从Route53端进行重定向(。将非常感谢任何帮助

更新:所以我的确切要求是谷歌将处理SEO相关的事情https://us.springverify.com/api-integrations(无斜线(和https://us.springverify.com/api-integrations/作为不同的网站。其他内部页面也是如此。所以我想要的是,即使URL被键入或指向https://us.springverify.com/api-integrations(不带斜杠(URL应重定向到https://us.springverify.com/api-integrations/(带有尾随斜杠(。我如何使用Cloudfront实现这一点。如果你需要其他信息,请告诉我。

这是S3和Route53无法实现的。S3只是一个数据库,您可以在其中通过键访问对象。例如,在您的静态网站示例中,每个页面都是一个S3对象,它有一个对象密钥,例如S3://my-bucket/pages/my-page

您可以通过CloudFront函数或Lambda@Edge.如果你提供更多关于你想要实现的目标的信息,我可能会进一步帮助你。

更新(OP澄清后(:

我不确定这对SEO有多大帮助,但您可以使用CloudFront函数为CF分发收到的每个请求添加一个尾部斜杠。要做到这一点,您应该:

  1. 创建一个具有事件类型的CF函数:查看器请求。请参阅此处的AWS文档了解如何做到这一点
  2. 添加所需的URL重写(例如,附加"/"(业务逻辑。请参阅下面的示例
function handler(event) {
var request = event.request;
var uri = request.uri;

if (!uri.endsWith('/')) {
request.uri += '/';
} 

return request;
}

最佳,Stefan

最新更新