Страница ошибки конкретного языка 404 в облачной среде - PullRequest
0 голосов
/ 22 января 2019

У меня есть дистрибутив Cloudfront, обслуживающий ведро s3. Чтобы сделать страницу многоязычной, я добавил функцию lamba @ edge, которая анализирует заголовок Accept-Language и перенаправляет с /<page> на /en/<page> или /de/<page>.

Перенаправление происходит с кодом возврата 303, так что пользователи получают /en/<page> в качестве пути, указанного в браузере, и могут переключать языки, переходя к /de/<page>.

Works! Но что в случае с 404? Если я настраиваю пользовательскую страницу 404 в S3 или облачном фронте и пользователь запрашивает /de/<non-existing-page>, он перенаправляется на пользовательскую страницу 404 (например, /error-pages/404). Но эта страница не переведена!

Есть ли способ сделать язык страницы 404 специфичным? В зависимости от того, пришел ли пользователь из /en/<page> или /de/<page>?

1 Ответ

0 голосов
/ 24 января 2019

Я нашел решение.

  1. используйте 2 S3 Buckets (или столько, сколько у вас есть языков), по одному для каждого языка, и поместите файлы для каждого языка в соответствующее ведро
  2. настроить ErrorDocument для каждого сегмента на страницу 404 для конкретного языка
  3. В вашем дистрибутиве CloudFront настройте источник и поведение для каждого языка таким образом, чтобы PathPattern /<language>/* был направлен на источник, извлекаемый из корзины s3 для языка <language>
...