S3 web sitesi yönlendirme konumunu neden CloudFront izlemiyor?


18

Amazon S3'te barındırılan bir web sitem var. WordPress'te barındırılan eski bir web sitesinin yeni sürümüdür.

Website Redirect LocationEski konumu işlemek ve yeni web sitesi sayfalarına yönlendirmek için meta veriler içeren bazı dosyalar ayarladım .

Örneğin: http://www.mysite.com/solutionYönlendirme yapmak istediğimden , doğru meta verilerle grubumun içinde http://mysite.s3-website-us-east-1.amazonaws.com/product.htmladında boş bir dosya oluşturdum solution:

Website Redirect Location= /product.html

S3 yönlendirme meta verileri, 301 Moved PermanentlySEO için harika olana eşdeğerdir . URL'ye doğrudan S3 alan adından erişirken bu harika çalışır.

Ayrıca web sitesi kova dayalı bir CloudFront dağıtım kurduk. Ve dağıtımım üzerinden erişmeye çalıştığımda, yönlendirme çalışmıyor, yani:

http://xxxx123.cloudfront.net/solution yönlendirme yapmaz, bunun yerine boş dosyayı indirir.

Benim sorum CloudFront dağıtımı yoluyla yönlendirmeyi nasıl koruyacağım? Ya da SEO'yu bozmadan yönlendirmeyi nasıl ele alacağınız hakkında herhangi bir fikir?

Teşekkürler

Yanıtlar:


47

Geçenlerde bu sorunla karşılaştı ve işe yaramış gibi görünen bir geçici çözüm buldum.

Kova ana bilgisayar adı yerine S3 statik web sitesi ana bilgisayar adına işaret eden özel bir orijinli bir Cloudfront dağıtımı oluşturdum. OP durumunda, istenen kaynak olacaktır.

mysite.s3-website-us-east-1.amazonaws.com

Kova aslında başlangıç ​​noktası olarak kullanarak bir Cloudfront dağıtımına basmak, kova aslında yeniden yönlendirmeler sunmadığından çalışmaz. Yalnızca dosyalara hizmet verir ve meta verileri depolar.

Umarım yardımcı olur.


Yine de Cloudfront yönlendirme yanıtını izlemek yerine önbelleğe aldığını unutmayın. Sonuç olarak Cloudfront'u atlamak için yönlendirdiğiniz kaynakların indirilmesi.
tfischbach

2
bmatsuo - Bunun için size milyarlarca puan verebilirsek, yapardık. Çok teşekkür ederim. Gerçekten günü kurtardın.
su çulluğu

Bu çok yardımcı oldu! S3'te yeni olan herkes için bahsetmeye değer: statik bir kova oluşturmak için, grubunuza gidin ve Özellikler sekmesine gidin. Statik Web Sitesi Barındırma seçeneğini tıklayın. Bu size yönlendirmeye izin verecek doğru URL'yi verecektir :)
rick6

2

analiz

Belgelenmiş göre özel Origins için Request ve Response Davranış ve Desteklenen HTTP Durum Kodları , Amazon CloudFront takip etmez yönlendirmeler maalesef:

[...] Yönlendirmeyi yapılandırdıktan sonra, bir son kullanıcı nesne için bir istek ilk gönderdiğinde, CloudFront Front isteği başlangıç ​​noktasına gönderir ve başlangıç ​​noktası bir yönlendirme ile yanıt verir (örneğin, 302 Geçici Olarak Taşındı). CloudFront yönlendirmeyi önbelleğe alır ve son kullanıcıya döndürür. CloudFront yönlendirmeyi izlemez. [benimkini vurgula]

Elbette, özel bir kaynak yerine Amazon S3 kullanıyorsunuz ve ilgili bir bölüm, Amazon S3 Orijinleri için İstek ve Yanıt Davranışı'nda özellikle bulunmuyor , ancak Amazon S3 yönlendirmeleri sadece son zamanlarda oldukça eklenmiştir (bkz. Amazon S3 - Web Sitesi Desteği Yönlendirmeler ), orada hala eksik olabilir.

Buna göre, HTTP durum kodu 200 OK ile boş bir dosya almadığınızı tahmin ediyorum , bunun yerine bir HTTP durumu 301 Hiç gövdesi olmadan Kalıcı Olarak Taşındı - bunu bir tarayıcıyla mı yoksa sonunda sadece bir komut satırı aracıyla mı kontrol ettiniz? örneğin cURL veya HTTPie ? İkinci araçlar genellikle yönlendirmeleri takip etmek için açık bir parametre gerektirir, bu nedenle bu kolayca fark edilmeyebilir.

Potansiyel Çözüm

Analizin doğru olduğu ortaya çıkarsa, yönlendirmeyi CloudFront'u açıkça hedefleyecek şekilde yapılandırmanız gerekir, yine Yönlendirmeler'e bakın :

Web sunucunuzu istekleri aşağıdaki konumlardan birine yönlendirecek şekilde yapılandırabilirsiniz:

  • Kaynak sunucudaki nesnenin yeni URL'si. Son kullanıcı yeni URL'ye yönlendirmeyi izlediğinde, son kullanıcı CloudFront'u atlar ve doğrudan başlangıç ​​noktasına gider. Sonuç olarak, istekleri başlangıç ​​noktasında nesnenin yeni URL'sine yönlendirmemenizi öneririz.

  • Nesne için yeni CloudFront URL'si. Son kullanıcı yeni CloudFront URL'sini içeren isteği gönderdiğinde, CloudFront nesneyi kaynağınızdaki yeni konumdan alır, kenar konumunda önbelleğe alır ve nesneyi son kullanıcıya döndürür. Nesne için sonraki istekler kenar konumu tarafından sunulacaktır. Bu, nesneyi başlangıç ​​noktasından isteyen izleyicilerle ilişkili gecikmeyi ve yükü önler. Ancak, nesneye yönelik her yeni istek, CloudFront'a yapılan iki istek için ücretlendirilir.


CloudFront dağıtımı yoluyla yeniden yönlendirilmesi gereken URL'yi CURL yaptığımda: HTTP/1.0 200 OK Content-Type: application/octet-stream Content-Length: 0 Anladığım kadarıyla, yeniden yönlendirme S3 tarafından yönetiliyor ve bu durumda dosya CloudFront tarafından barındırılıyor ve S3 As S3 için ayarlanan yönlendirme başlıklarını umursamıyor metadata dışındaki yönlendirmeyi eşleyemediğim dosyanın web sunucusudur.
Yannick Chaze
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.