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

我的理想设置是采取当前的客户端站点,上传一个.htaccess与里面的正则expression式,将匹配的URI,如果它find一个特定的文件扩展名,它会使用相同的path,但有一个更改的域。

即。

正常path:

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

我连续search几个小时,没有运气。 再次,这是为了实际利用亚马逊的CloudFront。 S3已经挂载到网站进行备份和使用s3fs存储文件,但是这并不能解决问题,因为它直接使用S3而不是使用CloudFront。

经过testing和处理httpd-2.2.3-31.el5.centos

redirect方法:

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

R将导致页面实际上redirect到新的域名,这可能或可能不是你正在寻找的。

代理方法:

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

P将导致一个代理(假设你已经安装了mod_proxy),这将保持内容来自你的服务器,而不是一个redirect。 这将导致您的服务器做更多的工作,并会产生更多的I / O带宽,然后redirect。 代理是昂贵的,但他们确保一切都出现在一个单一的域名,而不是访问远程服务器或CDN的内容

编辑:我已经更新它使用request_URI而不是request_filename,这样不存在的subdirectoires内的文件仍将代理/redirect。