云端特定语言的 404 错误页面

Language specific 404 error page in cloudfront

我有一个服务于 s3 存储桶的云端分布。为了使页面多语言,我添加了一个 lamba@edge 函数来分析 Accept-Language header 并将 /<page> 重定向到 /en/<page>/de/<page>.

重定向发生在 303 return 代码中,以便用户获得 /en/<page> 作为浏览器中显示的路径,并且可以通过转到 /de/<page>.[=19 来切换语言=]

有效!但是如果是 404 呢?如果我在 S3 或云端配置自定义 404 页面并且用户请求 /de/<non-existing-page>,他将被重定向到自定义 404 页面(例如 /error-pages/404)。但是那个页面没有翻译!

有没有办法使 404 页面语言特定?取决于用户来自 /en/<page> 还是 /de/<page>

我找到了解决方案。

  1. 使用 2 个 S3 存储桶(或尽可能多,有多少种语言),每种语言一个,并将每种语言的文件放入相应的存储桶中
  2. 为每个存储桶配置 ErrorDocument 到特定语言的 404 页面
  3. 在您的 CloudFront 分配中,为每种语言配置来源和行为,以便 PathPattern /<language>/* 定向到从语言 <language>[=20 的 s3 存储桶中提取的来源=]