我有以下 URL,我想将所有 css、图像和 javascript 重定向到我的 amazon s3 存储桶。
# I have these URL's (and more)
https://secure.mydomain.co.uk/styles/donate/style.css
https://secure.mydomain.co.uk/js/donate/jquery.min.js
https://secure.mydomain.co.uk/images/donate/help-icon.png
# I would like to redirect all CSS, JS & Image files to:
https://s3-eu-west-1.amazonaws.com/mydomain.co.uk/static/$1
# So the URLs should be
https://s3-eu-west-1.amazonaws.com/mydomain.co.uk/static/styles/donate/style.css
https://s3-eu-west-1.amazonaws.com/mydomain.co.uk/static/js/donate/jquery.min.js
https://s3-eu-west-1.amazonaws.com/mydomain.co.uk/static/images/donate/help-icon.png
# All other .php files, I want served using my normal secure.mydomain.co.uk
https://secure.mydomain.co.uk/other/php/files.php
我尝试了以下操作,但没有达到预期的效果:
RewriteCond %{REQUEST_URI} ^secure.mydomain.co.uk/(.*)$ [NC]
RewriteRule ^secure.mydomain.co.uk/(.*) https://s3-eu-west-1.amazonaws.com/mydomain.co.uk/static/$1 [R=302,L,NC]
我已经创建了一个 CNAME 来指向我们的 S3 存储桶,但我不能使用 CNAME 进行安全请求(亚马逊不允许这样做),所以我只想将所有资产请求(css, images & js files
)转发到 Amazon S3 以通过亚马逊获取内容https
。
答案1
你需要做的是修复你的RewriteCond
- 目前它将重定向全部请求,无论 URI 如何。您想限制它仅允许您想要的文件名。试试这个:
RewriteCond %{REQUEST_URI} ^secure.mydomain.co.uk/(.*).[php|js|css|gif|jpg]$ [NC]
这应该重定向所有以 php、js、css、gif 或 jpg 结尾的文件 - 并且仅重定向这些文件。
答案2
搞清楚我需要什么。基本上,我的服务器上有资产,我已将它们复制到S3
,现在想将所有链接重定向到我的S3
存储桶(这样我就可以通过 提供它们https
)。
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^secure\.mydomain\.org.uk$ [NC]
RewriteRule filename\.min\.js https://s3-eu-west-1.amazonaws.com/yourbucket/path/to/js/filename.min.js [L,R=301,NC]
RewriteRule another\.min\.js https://s3-eu-west-1.amazonaws.com/yourbucket/path/to/js/another.min.js [L,R=301,NC]
因此基本上,所有请求filename.min.js
都会重定向到我的亚马逊存储桶,并从那里提供服务。
可能有更好的方法来做到这一点(我不擅长.htaccess
规则),但单独添加我需要的每个文件似乎可行。(我只需要重定向这些文件)。
我希望对我的secure.
子域的所有其他请求都能通过我的应用程序和资产商店正常提供(而不是重定向到亚马逊)。