htaccess重写规则,用于将文件夹中的所有图像转换为另一个域

时间:2017-02-01 14:58:28

标签: wordpress .htaccess

我有一个实时网站(livesite.com)和一个开发网站(devsite.com)。 images目录非常庞大,我无法将它从livesite.com复制到devsite.com。因此,我想为devsite.com添加重写规则以从livesite.com获取图像(两个站点上的目录结构完全相同 - 它只是不同的域)

这是一个wordpress网站,因此每个月图像都位于此结构中;

/wp-content/uploads/2015/01/image.jpg
/wp-content/uploads/2015/02/image.jpg
etc..

我需要为2015目录中的所有内容添加重写规则。

到目前为止,这就是我在devsite.com根目录下的htaccess文件中所拥有的内容。它的目标是2015文件夹中的特定子目录,我甚至无法使其工作 - 图像仍然试图从devsite.com域而不是livesite.com中检索

Options +FollowSymLinks
RewriteEngine On
RewriteRule /wp-content/uploads/2015/01/(.*)$ http://livesite.com/wp-content/uploads/2015/01/$1 [R=302,NC,L]

我怀疑我在这里犯了一个笨拙的错误 - 任何帮助都赞赏!

1 个答案:

答案 0 :(得分:1)

问题在于以斜杠开头的模式,请参阅RewriteRule

  

每个目录重写
   - 删除的前缀始终以斜杠结尾,这意味着匹配对于从不具有前导斜杠的字符串。因此,带有^ /的模式在每个目录上下文中永远不会匹配。

所以,在你的情况下它应该是

RewriteRule ^wp-content/uploads/2015/01/(.*)$ http://livesite.com/wp-content/uploads/2015/01/$1 [R=302,NC,L]

虽然,因为你想覆盖整个2015子目录,你可以将其简化为

RewriteRule ^wp-content/uploads/2015/(.*)$ http://livesite.com/wp-content/uploads/2015/$1 [R,NC,L]

甚至

RewriteRule ^wp-content/uploads/2015/(.*)$ http://livesite.com%{REQUEST_URI} [R,NC,L]