1

我使用的是S3存儲爲靜態的網絡解決方案來承載單個頁面作出反應的應用程序。 的反應程序正常工作時,我打根域s3-bucket.amazon.com和HTML5歷史API工作正常,我點擊一個鏈接,每一次新的URL看起來不錯:_http://s3-bucket.amazon .com/entities/entity_id_ 當我使用固定鏈接訪問應用程序時,會發生問題。假設我打字相同的URL(_http://s3-bucket.amazon.com/entities/entity_id_)在瀏覽器中,我會從Amazon S3收到以下錯誤:的Javascript陣營單頁應用+亞馬遜S3:固定鏈接問題

404 Not Found 
Code: NoSuchKey 
Message: The specified key does not exist. 
Key: users 
RequestId: 3A4B65F49D07B42C 
HostId: j2KCK4tvw9DVQzOHaViZPwT7+piVFfVT3lRs2pr2knhdKag7mROEfqPRLUHGeD/TZoFJBI4/maA= 

是否有可能使亞馬遜S3與永久鏈接和HTML5歷史api很好地合作?也許它可以充當代理?

謝謝

回答

0

我在Amazon S3上運行SPA沒有經驗,但是這似乎是URL重寫的問題。 這是一件事確實有運行應用程序/網站時,歷史(HTML5)API重寫您的網址。 但允許重寫URL來進行訪問時刷新或冷衝浪到您的網站肯定需要URL重寫在服務器級別。 我在想web.confg(IIS),.htaccess(Apache)或nginx站點配置。

看來同樣的問題早已見怪不怪問前段時間:https://serverfault.com/questions/650704/url-rewriting-in-amazon-s3

+0

我讀了文章。基本上是重寫url,因爲它的瀏覽器不支持HTML5歷史api。我正在尋找的是更多的代理功能。 – Keldon

3

可悲的是S3不支持單頁的應用程序所需的(基本上你想要的通配符的路由一切後的URL主機的index.html服務,但保留的路線。

所以www.blah.com/hello/world實際上起到www.blah.com/index.html但路線傳遞到單頁的應用程序。

好消息是你可以做一個CDN如快速度(光油)前面S3。建立一條規則,例如:

if(req.url.ext == "") { 
    set req.url = "/index.html"; 
} 

這會將所有非資產請求(任何沒有文件擴展名的請求)重定向到域上的index.html。

+0

謝謝。這聽起來不錯 – Keldon

+1

最佳答案。快速完成工作 –