使用 .htaccess 從 Amazon S3 CloudFront 提供文件

使用 .htaccess 從 Amazon S3 CloudFront 提供文件

我理想的設定是獲取當前客戶端站點,上傳一個內部包含正則表達式的.htaccess,該正則表達式將與URI 匹配,如果找到某個文件擴展名,它將使用相同的路徑,但使用更改的域。

IE。

正常路徑:

http://www.domain.com/something/images/someimage.jpeg
http://www.domain.com/assets/js/jquery.js

.htaccess 翻譯後會將上面的內容變成:

http://mycdn.other.com/something/images/someimage.jpeg
http://mycdn.other.com/assets/js/jquery.js

我連續用谷歌搜尋了幾個小時,沒有運氣。同樣,這是為了實際利用亞馬遜的 CloudFront。 S3 已經安裝到網站上,用於使用 s3fs 進行備份和儲存文件,但這並不能解決問題,因為它直接使用 S3,而不是使用 CloudFront。

答案1

在 httpd-2.2.3-31.el5.centos 上進行測試和工作

重定向方法:

RewriteEngine On
RewriteCond %{REQUEST_URI} .*jpg$|.*gif$|.*png$ [NC]
RewriteRule (.*) http://www.google.com/$1 [R]

R 將使頁面實際重定向到新網域,這可能正是您想要的,也可能不是。

代理方法:

RewriteEngine On
RewriteCond %{REQUEST_URI} .*jpg$|.*gif$|.*png$ [NC]
RewriteRule (.*) http://www.google.com/$1 [P]

P 將產生一個代理程式(假設您安裝了 mod_proxy),它將保留來自您伺服器的內容而不是重定向。這將導致您的伺服器執行更多工作,並且會產生比重定向更多的 I/O 頻寬。代理很昂貴,但它們可以確保所有內容都出現在單一網域下,而不是存取遠端伺服器或 CDN 來取得內容

編輯:我已將其更新為使用 request_URI 而不是 request_filename,這樣子目錄中不存在的檔案仍將代理/重定向。

相關內容