尝试从另一个位置获取图像,但 htaccess 中的 RedirectMatch 被忽略

Posted

技术标签:

【中文标题】尝试从另一个位置获取图像,但 htaccess 中的 RedirectMatch 被忽略【英文标题】:Trying to obtain images from another location but RedirectMatch in htaccess is ignored 【发布时间】:2021-05-05 16:34:47 【问题描述】:

我刚刚设置了一个新的子域“预览”,即 preview.example.com,并且我正在设置一个实时网站的代码库的副本(来自 www.子域),这样我就可以拥有一个重复的环境用于测试和显示我的客户最近的更改。

我不想让自己将所有图像复制到预览中,因此在 WordPress 站点 /wp-content/uploads/ 中保存图像的正常位置是空的。我想使用一个简单的 htaccess 规则来获取这些,而不是从存在相同路径的图像的实时子域中获取这些。换句话说,一个请求

https://preview.example.com/wp-content/uploads/2021/01/test.jpg

将被重定向到图像所在的以下位置..

https://www.example.com/wp-content/uploads/2021/01/test.jpg

我尝试使用最简单的 htaccess 重定向规则来设置它,但它似乎被忽略了,我不知道为什么。知道如何解决这个问题吗?

RedirectMatch 301 /wp-content/uploads/(.*) http://www.example.com/wp-content/uploads/$1

【问题讨论】:

preview.example.comDocumentRootwww.example.com的一样吗? ...或者这两个主机名指向文件系统的哪个位置?虽然您可以从外部重定向请求,但这很慢,并且会使访问服务器的请求数量增加一倍。您的 .htaccess 文件中还有哪些其他指令? @anubhava DocumentRoot 未设置。这是个问题吗? @AdamJones:如果DocumentRoot 文件夹是分开的但在同一主机上,那么您可以创建wp-content/uploads/ 的符号链接并避免进行任何重定向。 @anubhava 啊,谢谢!如果你想写一个答案,请随意;) 【参考方案1】:

将我的评论转换为答案,以便将来的访问者轻松找到解决方案。

场景是子域和主域都在同一主机上,但它们的DocumentRoot 设置为不同的路径。 OP 希望从子域中提供大量图像,但不进行批量复制。

不修改.htaccess 的建议方法是创建wp-content/uploads/ 的符号链接。建议在 .htaccess 中使用的唯一选项是:

Options +FollowSymLinks

这允许使用符号链接来服务网络请求。

【讨论】:

以上是关于尝试从另一个位置获取图像,但 htaccess 中的 RedirectMatch 被忽略的主要内容,如果未能解决你的问题,请参考以下文章

获取列表视图中的图像视图位置

使用 htaccess 检查另一个目录中的文件

.htaccess 拒绝访问图像文件夹,但允许访问查看单个图像

从 MongoDB 文档中获取 ID,然后从另一个文档中获取它们的相关值

无法从另一个应用程序的面板控件中获取文本

Xamarin Android - 从图库中选择图像并获取其路径