2014-04-07 37 views
8

Tôi đang lưu trữ một trang web tĩnh được tạo bằng Middleman trên CloudFront và S3. Tôi muốn thêm nhiều ngôn ngữ hỗ trợ và trung gian cho phép tôi bản địa hóa nội dung và có phiên bản tiếng Anh tại /index.html và nội dung đã dịch tại /sp/index.html chẳng hạn.Cloudfront/S3: Tệp máy chủ khác nhau tùy thuộc vào Tiêu đề yêu cầu

Tôi muốn có thể phát hiện tiêu đề "Accept-Language" trong yêu cầu và dựa trên máy chủ đó hoặc là /index.html hoặc /sp/index.html.

Dựa trên nghiên cứu của tôi, tôi không thể thấy cách làm việc này với S3 và Cloudfront, nhưng có lẽ các bạn có ý tưởng?

Nếu không có "cách thích hợp và tốt" khi thực hiện điều này với CloudFront và S3, thì giải pháp thay thế tốt nhất tiếp theo là gì? Hiện tại tôi đang nghĩ đến việc phát hiện ngôn ngữ trong JavaScript và sau đó chuyển hướng người dùng nếu ngôn ngữ không phải là tiếng Anh.

Chúc mừng, Kim

+0

bạn có thể thiết lập máy chủ proxy ở phía trước thùng và thêm điều kiện ghi lại –

Trả lời

2

Như đã đề cập trong các ý kiến, bạn sẽ cần một số loại trọng tài có thể đọc tiêu đề yêu cầu và hoặc chuyển hướng hoặc phục vụ nội dung động. S3 là vấn đề ở đó.

CloudFront có thể forward the Accept-Language header to your origin server và đảm bảo rằng nội dung chỉ được lưu vào bộ nhớ cache cho mỗi ngôn ngữ. Vì vậy, một phần không phải là một vấn đề.

Nếu S3 là nguồn gốc của bạn, thì bạn gặp sự cố vì tệp của bạn tĩnh và không thể xử lý yêu cầu đến bằng thông tin ngôn ngữ. Tôi không khuyên bạn nên cố gắng phát hiện ngôn ngữ bằng JavaScript. It's problematic.

Mặc dù CloudFront có thể được định cấu hình với nhiều nguồn gốc (một ngôn ngữ cho mỗi ngôn ngữ, trong trường hợp của bạn) nhưng không thể chuyển tiếp đến các mặt hàng này dựa trên tiêu đề yêu cầu. Hiện tại "hành vi" chỉ có thể khớp với đường dẫn URL. Tôi nghi ngờ họ có thể giới thiệu quy tắc tiêu đề tại một số điểm, nhưng cho đến khi họ làm (hoặc trừ khi bạn có thể tìm thấy một CDN khác) Tôi sợ câu trả lời của tôi sẽ là một câu trả lời "bạn không thể".

Như trang web của bạn là tất cả HTML bằng phẳng, tôi nghi ngờ bạn không quan tâm đến một giải pháp phức tạp mà bao gồm các hành vi CloudFront khác nhau và các kịch bản máy chủ năng động, vv ..

Tôi nghĩ rằng lựa chọn tốt nhất của bạn cho đến nay là một đơn giản , công nghệ thấp một -

Cung cấp cho khách truy cập một lựa chọn ngôn ngữ và cho phép họ chuyển đổi ngôn ngữ từ bất kỳ trang nào. Điều này cũng tránh bất ngờ - Nếu tôi google một cái gì đó bằng tiếng Anh, nhưng tôi nói tiếng Tây Ban Nha tôi nên xem trang tiếng Anh mà tôi googled và sau đó chuyển sang tiếng Tây Ban Nha nếu tôi cảm thấy thích nó.

Các vấn đề liên quan