1

我們有一個使用服務數據的單頁應用程序。生成的URL看起來像:s3託管單頁應用程序的重寫規則

www.domain.com/path/?query=my-awesome-page-title 

我們希望被prettyfied的網址:

www.domain.com/path/my-awesome-page-title 

S3是一個要求。

我相信唯一的解決方案將包括Cloudfront和可能的Lambda,但因爲我在這裏問...我不完全確定。所以我把問題提交給你那裏的專家。

+0

你想要的網址美化(儘管太重,目的)EC2實例...其中?在導航到'/ path?query = ...'後的地址欄中?或者你想能夠導航到漂亮的URL並重寫?你在尋找什麼行爲? –

+0

當用戶瀏覽到www.domain.com/path/my-awesome-page-title時,他們將獲得正確的內容和體驗。在應用程序結構中,我可以保留查詢參數 - 或者不。 //其他單頁應用程序(用Vue或Angular編寫)如何實現此目的? –

+0

這裏有一個:https://serverfault.com/a/633571/153161 ...我相信有一個測試桶,我忘了...'http://spa-redirect-test.sqlbot.net/posts? this = works + for + me'重定向到'http://spa-redirect-test.sqlbot.net/#!/ posts?this = works + for + me'。不知道這是你在找什麼。這可以保持查詢完整,位不會重寫 - 只使用S3重定向規則的路徑。 –

回答

1

如果您計劃擁有一個漂亮的URL,那麼最簡單便捷的方法是在AWS Stack中使用AWS CloudFront和Edge Lambda URL重寫,並在其中保存到S3路徑的映射。然而,目前查詢字符串無法通過Edge Lambda訪問,這會限制您只重寫URL的路徑。

如果需要修改整個URL包括查詢字符串,你可以使用 - API網關重寫URL -

+0

儘管您有可能是正確的,但我相信需要更多信息,然後才能說明這是否適用於當前的服務功能。 CloudFront中的S3重定向規則和Lambda @ Edge都不具有對查詢字符串(僅限路徑)的讀訪問權限。他們可以在重定向中設置查詢字符串(實際上這在S3重定向規則中沒有記錄,但是可以使用'':匹配前綴'foo',用'foo?q ='替換前綴,意味着'/ foobar'重定向到'foo?q = bar'),但它們都不能讀*它。 API網關功能可能是必要的。 –

+0

邁克爾,你是什麼意思「API網關功能可能是必要的」 –

+0

@JoshuaLevy如果你想做服務器端重定向(沒有EC2),涉及讀取/解析/解釋/操縱查詢字符串,S3重定向規則或Lambda @ Edge可以(當前)與這些工作,他們只看到路徑...但你可以用API網關相對容易地做到這一點,它可以訪問包括查詢字符串的完整請求。 –