2014-04-07 9 views
8

Mam hostowaną stronę statyczną wygenerowaną przez Middleman na CloudFront i S3. Chcę dodać obsługę wielu języków, a pośrednik pozwala mi zlokalizować treść i mieć wersję angielską w /index.html i przetłumaczoną treść na przykład w /sp/index.html.Cloudfront/S3: inny plik serwera w zależności od nagłówka żądania

Chciałbym móc wykryć nagłówek "Accept-Language" w żądaniu i na podstawie tego serwera albo /index.html lub /sp/index.html.

Na podstawie moich badań nie widzę sposobu na zrobienie tego z S3 i Cloudfront, ale może macie pomysł?

Jeśli nie ma "właściwego i dobrego sposobu" robienia tego z CloudFront i S3, jaka byłaby najlepsza alternatywa? Obecnie myślę o wykryciu języka w JavaScript, a następnie przekierowaniu użytkownika, jeśli język nie jest angielski.

Pozdrowienia, Kim

+0

możesz ustawić serwer proxy przed wiadrem i dodać warunki przepisywania –

Odpowiedz

2

Jak wspomniano w komentarzach trzeba będzie pewnego rodzaju arbitra, który może odczytywać nagłówki żądania i albo przekierowania lub służyć dynamicznej zawartości. S3 to problem.

CloudFront może forward the Accept-Language header to your origin server i zapewnić, że zawartość jest buforowana tylko w języku. Ta część nie stanowi problemu.

Jeśli S3 jest Twoim pochodzeniem, oznacza to, że masz problem, ponieważ Twoje pliki są statyczne i nie mogą przetworzyć przychodzącego żądania z informacjami o języku. Nie zalecam wykrywania języka za pomocą JavaScript. It's problematic.

Mimo że CloudFront może być skonfigurowany z wieloma źródłami początkowymi (po jednym dla każdego języka, w twoim przypadku), nie może ich przekazać dalej na podstawie nagłówka żądania. Obecnie "zachowania" mogą być zgodne tylko ze ścieżką URL. Podejrzewam, że w pewnym momencie mogą wprowadzić reguły nagłówków, ale dopóki nie zrobią tego (lub jeśli nie znajdziecie innego CDN), obawiam się, że moja odpowiedź będzie "nie można" odpowiedzieć.

Ponieważ witryna jest wszystkie płaskie HTML, podejrzewam, że nie jesteś zainteresowany w pokrętny rozwiązanie, które obejmuje różne CloudFront zachowań i dynamicznych skryptów serwerowych itp ..

Myślę, że najlepszym rozwiązaniem jest zdecydowanie prosty , low-tech -

Oferuje odwiedzającym wybór języka i umożliwia zmianę języka z dowolnej strony. To również pozwala uniknąć niespodzianek - jeśli coś wypiszę w języku angielskim, ale mówię po hiszpańsku, powinienem zobaczyć angielską stronę, na którą się wylogowałem, a potem przełączyć na hiszpański, jeśli mam na to ochotę.

Powiązane problemy