使用.htaccess重定向wordpress上传文件夹到s3存储桶
我正尝试在wordpress中使用htaccess将我的上传文件夹重定向到我的s3存储桶,但它不工作。我网站上的所有图片仍然通过服务器在本地提供,而不是链接到存储分区。使用.htaccess重定向wordpress上传文件夹到s3存储桶
这是我的htaccess文件:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
RewriteEngine On
RewriteRule ^wp-content/uploads/(.*)$ https://BUCKET.s3.amazonaws.com/wp-content/uploads/$1 [L]
# BEGIN W3TC CDN
<FilesMatch "\.(ttf|ttc|otf|eot|woff|font.css)$">
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "*"
</IfModule>
</FilesMatch>
# END W3TC CDN
有几个问题。你需要把规则高于你的wordpress规则,因为wordpress规则路由每请求index.php。 接下来,您将需要使用mod_proxy
并使用[P] flag
,因为无论在重写过程中没有指定重定向,Apache都会执行此操作,因为替换网址是新域。所以Apache将执行重定向。因此使用[P] flag
应该代理内容而不是重定向。这应该完成你所需要的。
RewriteEngine On
RewriteRule ^wp-content/uploads/(.*)$ https://BUCKET.s3.amazonaws.com/wp-content/uploads/$1 [P]
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
'mod_proxy'中导致本地服务器在将其返回给客户端之前从该桶中获取图像,从而增加服务器的负担,不是吗?这将无法实现在S3上托管文件的全部目的。 –
'这会打败S3上托管文件的全部目的@FabienSnauwaert其实你不知道他的目的是什么。在s3上托管有很多原因。安全,无限的磁盘空间,冗余等问题是要求协助代码,而不是他应该如何使用s3与wordpress。你的评论应该针对他的问题。我只解释了它为什么不起作用。 –
我会建议使用[W3的总缓存(https://wordpress.org/plugins/w3-total-cache/),它内置了这个功能,并且[这里有一个教程(HTTPS:/ /www.elegantthemes.com/blog/tips-tricks/how-to-use-amazon-s3-and-cloudfront-with-wordpress)。 – APAD1
我正在使用它。它会在单个帖子中替换它,但不会在我的主题主页缩略图 – user2570937