云端特定语言的 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>
?
我找到了解决方案。
- 使用 2 个 S3 存储桶(或尽可能多,有多少种语言),每种语言一个,并将每种语言的文件放入相应的存储桶中
- 为每个存储桶配置
ErrorDocument
到特定语言的 404 页面
- 在您的 CloudFront 分配中,为每种语言配置来源和行为,以便
PathPattern
/<language>/*
定向到从语言 <language>
[=20 的 s3 存储桶中提取的来源=]
我有一个服务于 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>
?
我找到了解决方案。
- 使用 2 个 S3 存储桶(或尽可能多,有多少种语言),每种语言一个,并将每种语言的文件放入相应的存储桶中
- 为每个存储桶配置
ErrorDocument
到特定语言的 404 页面 - 在您的 CloudFront 分配中,为每种语言配置来源和行为,以便
PathPattern
/<language>/*
定向到从语言<language>
[=20 的 s3 存储桶中提取的来源=]