Cloudfront / S3: Verschiedene Serverdateien je nach Anforderungsheader

8

Ich hosste eine statische Website, die mit Middleman auf CloudFront und S3 erstellt wurde. Ich möchte mehrsprachige Unterstützung hinzufügen und Mittelsmann ermöglicht es mir, den Inhalt zu lokalisieren und habe die englische Version unter /index.html und den übersetzten Inhalt zum Beispiel unter /sp/index.html.

Ich möchte den Header "Accept-Language" in der Anfrage erkennen und basierend auf diesem Server entweder /index.html oder /sp/index.html.

Basierend auf meiner Forschung kann ich keinen Weg sehen, dies mit S3 und Cloudfront zu machen, aber vielleicht habt ihr eine Idee?

Wenn es mit CloudFront und S3 keinen "richtigen und guten Weg" gibt, was wäre die nächstbeste Alternative? Derzeit denke ich daran, die Sprache in JavaScript zu erkennen und den Benutzer dann umzuleiten, wenn die Sprache nicht Englisch ist.

Grüße, Kim

    
user3505886 07.04.2014, 08:35
quelle

1 Antwort

2

Wie in den Kommentaren erwähnt, benötigen Sie einen Arbitrator, der Request-Header lesen und dynamischen Content entweder umleiten oder bedienen kann. S3 ist das Problem dort.

CloudFront kann den Accept-Language-Header an Ihren Ursprungsserver weiterleiten , und stellen Sie sicher, dass Inhalte nur pro Sprache zwischengespeichert werden. Dieser Teil ist also kein Problem.

Wenn S3 Ihr Ursprung ist, liegt ein Problem vor, da Ihre Dateien statisch sind und die eingehende Anfrage nicht mit den Sprachinformationen verarbeiten können. Ich empfehle nicht, die Sprache mit JavaScript zu erkennen. Es ist problematisch .

Obwohl CloudFront mit mehreren Ursprüngen konfiguriert werden kann (in Ihrem Fall einer pro Sprache), kann CloudFront diese nicht basierend auf dem Anfrage-Header weiterleiten. Derzeit kann "Verhalten" nur dem URL-Pfad entsprechen. Ich vermute, dass sie irgendwann Kopfzeilenregeln einführen könnten, aber bis sie es tun (oder wenn Sie ein anderes CDN finden, das das tut), befürchte ich, dass meine Antwort eine "Sie können nicht" Antwort sein wird.

Da es sich bei Ihrer Website ausschließlich um HTML handelt, sind Sie vermutlich nicht an einer komplexen Lösung interessiert, die verschiedene CloudFront-Verhaltensweisen und dynamische Serverskripts usw. umfasst.

Ich denke, Ihre beste Option bei weitem ist eine einfache, Low-Tech -

Bieten Sie dem Besucher eine Auswahl an Sprache und erlauben Sie ihm Sprache von jeder Seite zu wechseln. Dies vermeidet auch Überraschungen. - Wenn ich etwas auf Englisch google, aber ich spreche Spanisch, sollte ich die englische Seite sehen, die ich gegoogelt habe und dann auf Spanisch umschalten, wenn mir danach ist.

    
Tim 22.01.2015 10:52
quelle