使用 .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

我连续几个小时在 Google 上搜索,但无果。再次重申,这实际上是为了利用 Amazon 的 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,这样不存在的子目录内的文件仍将代理/重定向。

相关内容