htaccess 重定向安全 URL,将旧资产重定向到 Amazon S3,仅适用于 https

htaccess 重定向安全 URL,将旧资产重定向到 Amazon S3,仅适用于 https

我有以下 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.子域的所有其他请求都能通过我的应用程序和资产商店正常提供(而不是重定向到亚马逊)。

相关内容