2017-05-07 86 views
0

特定頁面我重建我的網站。新的CloudFront將在S3上進行託管。301重定向與CloudFront的

如何創建針對舊網站存在的一些網址,幾個重定向,但不會在新網站上?

example.com/thing?id=blah例如我會想要重定向到othersite.com/other-path

+2

您的示例應該包含您重定向的地址以及您要重定向到的地址。 –

回答

1

你不能做重定向在CloudFront的,但因爲你的出身是S3,你可以做重定向在。

首先,你需要確保爲您的S3原點CloudFront的正確配置。您無法使用標準REST API(這是自動完成選項)進行網站重定向。

輸入Amazon S3的靜態網站託管端點你的水桶。該值顯示在Amazon S3控制檯的「靜態網站託管」下的「屬性」頁面中。

當你以這種格式指定桶名稱,您可以使用Amazon S3重定向和Amazon S3自定義錯誤文檔。

(來源:Using Amazon S3 Origins and Custom Origins for Web Distributions

接下來,如果您重定向消息從鏈接確實有他們的查詢參數,你需要評估基礎上,你需要make sure CloudFront is configured to forward query parameters。我應該注意到,我從來不必在s3中構建重定向,即查詢字符串參數的關鍵字,但根據this SO answer它應該是可能的。如果您的源服務器將返回所有的查詢字符串參數不同版本的對象的基礎上所有

全部轉發,緩存選擇此選項。

(來源:Query String Forwarding and Caching

最後,set up your S3 bucket with Routing Rules用於期望重定向。鑑於您的例子,它會是這個樣子:

<RoutingRules> 
    <RoutingRule> 
    <Condition> 
    <KeyPrefixEquals>thing?id=blah</KeyPrefixEquals> 
    </Condition> 
    <Redirect> 
    <ReplaceKeyWith>other-path</ReplaceKeyWith> 
    </Redirect> 
    </RoutingRule> 
</RoutingRules> 

(來源:Syntax for Specifying Routing Rules

的最後一點要提請你注意將路由的語法規則本身。被放置在您的路由規則中的條件是KeyPrefixEquals。沒有KeyEquals可用條件。

這意味着,如果您例如有thing?id=blahthing?id=blah2路由規則,順序將很重要。把blah2blah之前,或者你永遠匹配blah

還有許多其他路由規則可供選擇,這將允許您更改協議,重定向到另一個域,而不僅僅是重寫路徑等。查看documentation on routing rules瞭解更多信息。

+0

非常徹底!謝謝,盧克!這是偉大的:)我現在要實現這個... – Costa

+0

我有一些不需要查詢字符串的重定向。我已經開始了,但他們不工作。我只是得到我平常的404頁面。我想知道這是否是因爲我從同一S3存儲桶爲我的站點提供服務,因爲我啓用了靜態站點託管並列出了這些重定向?我應該爲重定向創建一個單獨的存儲桶嗎? – Costa

+0

您可能需要:更改原點後給CF更多時間進行更新,或使/ *失效。您絕對需要您的同一個存儲分區,並啓用靜態網站託管。 –