2014-06-22 53 views
1

我遇到了一個問題,我的網站www.example.com被映射到AWS Cloudfront。但是,我希望Cloudfront CDN將主機「www.example.com」傳遞到原始服務器以檢索內容。它看起來並不像Cloudfront上的此功能,但很確定它是在其他CDN提供商(如LLNW等)上。Cloudfront CDN到Apache的起源

現在爲了解決這個問題,我可以使用「example.com」的A記錄作爲原點在我的服務器端但這很容易導致重複內容的問題,我已經重定向非www到www在我的Apache配置:

RewriteCond %{HTTP_HOST} ^example\.com$ [NC] 
RewriteRule ^/(.*)?$ http://www.example.com/$1 [R=301,NC,NE,L] 

有沒有辦法有上述規則以外的所有*。 cloudfront.net域名?這樣可以確保來自cloudfront.net的任何流量都能夠使用「example.com」作爲來源,而不會被重定向到「www.example.com」,從而導致循環問題。

這裏是我已制定了規則:

RewriteCond %{HTTP_HOST} ^example\.com$ [NC] 
RewriteCond %{HTTP_HOST} !^.cloudfront\.net$ [NC] 
RewriteRule ^/(.*)?$ http://www.example.com/$1 [R=301,NC,NE,L] 

然而,正如我曾希望這是行不通的。

任何建議,將不勝感激。

謝謝!

回答

1

你的第二個條件有一個小錯誤。

!^.cloudfront\.net被錨定,因此指定該主機必須是不匹配恰好一個字符(由.指定),接着cloudfront.net。這永遠不會匹配,所以條件總是如此,並且不排除cloudfront。

由非錨定一個替換的條件,讓你的兩個條件成爲:

RewriteCond %{HTTP_HOST} ^example\.com$ [NC] 
RewriteCond %{HTTP_HOST} !cloudfront\.net$ [NC] 
+0

僅供參考,更新,回答,解決的條件1和2 – zx81

+0

感謝您的回答之間的失配。這是否意味着任何訪問example.com的請求都將被重定向到www.example.com,除非該請求來自cloudfront.net主機? –

+0

已更新的答案。 :) – zx81