我将在CloudFront和S3上托管使用Middleman生成的静态网站。我想添加多种语言支持,中间人允许我本地化内容,并在/index.html上提供英文版本,在/sp/index.html上提供翻译内容。
我希望能够在请求中检测“Accept-Language”标头,并基于该服务器/index.html或/sp/index.html。
根据我的研究,我看不到使用S3和Cloudfront做到这一点的方法,但也许你们有个想法?
如果没有“适当和好的方式”使用CloudFront和S3,那么下一个最佳替代方案是什么?目前我正在考虑在JavaScript中检测语言,然后在语言不是英语的情况下重定向用户。
问候,金
答案 0 :(得分:2)
正如评论中所提到的,您需要一种能够读取请求标头并重定向或提供动态内容的仲裁器。 S3是那里的问题。
CloudFront可forward the Accept-Language header to your origin server,并确保内容仅按语言缓存。所以那部分不是问题。
如果S3是您的来源,那么您遇到问题,因为您的文件是静态的,无法使用语言信息处理传入的请求。我不建议尝试使用JavaScript检测语言。 It's problematic
虽然CloudFront可以配置多个来源(每种语言一个,在您的情况下),但它无法根据请求标头转发到这些来源。目前"行为"只能匹配URL路径。我怀疑他们可能会在某些时候引入标题规则,但是直到他们这样做(或者除非你能找到另一个CDN),我担心我的回答将是"你不能"# 34;答案。
由于您的网站都是平面HTML,我怀疑您对包含各种CloudFront行为和动态服务器脚本等的复杂解决方案不感兴趣。
我认为到目前为止你最好的选择是简单,低技术 -
为访问者提供语言选择,并允许他们从任何页面切换语言。这也避免了意外 - 如果我用英语谷歌,但我会说西班牙语,我应该看到我用Google搜索的英文页面,如果我愿意的话,请切换到西班牙语。