如果文件不存在,Apache 重写,检查另一个目录

标签 apache mod-rewrite

我试图找到解决方案,但没有找到适合我需要的正确示例。

我在这种类型的路径中有一些图像:/container/2011/08/myfile.ext .我必须将一些文件从该路径移动到这样的路径:/container/newdir/2011/08/myfile.ext .唯一的变化是一些文件将移动到路径的“newdir”部分,但路径结构的其余部分是相同的。

我想弄清楚如何创建一个 Apache/htaccess 重写,它将首先检查原始位置中的文件 /container/2011/08/myfile.ext ,如果没有找到,请检查新位置 /container/2011/08/myfile.ext如果未找到,则返回标准 404。

我找到了进程和其他重定向的解决方案,但不是整个路径。当然,因为容器中的项目是特定于日期的,所以我需要一些可以获取所请求文件路径的东西,如果在请求的位置找不到,请检查新位置,如果在那里找不到,则发送正常的 404。所以,它不仅仅是单一文件类型的故障转移,而是更具动态性的东西。

任何人都可以对我如何处理这个问题有所了解吗?

最佳答案

RewriteCond %{REQUEST_URI} ^/container/\d{4}/\d{2}/.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(container)(/\d{4}/\d{2}/.+)$ $1/newdir$2

/container/2011/08/foo.bar被请求,但不存在,它将重写为 /container/newdir/2011/08/foo.bar .如果它也不存在那里,它应该导致 404。
\d代表一个数字和{x}重复 x 次。

关于如果文件不存在,Apache 重写,检查另一个目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6969106/

相关文章:

apache - 重写规则以在 HTTP 和 HTTPS 上工作

.htaccess - "Spoofing".htaccess 未找到 404 错误

.htaccess - 我怎样才能让我所有的网址都没有扩展名,没有尾部斜杠。并将 .php 和尾部斜杠重定向为无?

php - 使用 MAMP 的 Laravel 错误 HTTP 500

php - 繁重的处理导致站点不可用

apache - 我自己的 CA 使用 Apache 颁发的客户端证书

php - htaccess url 将 http www 和非 www 重写为 https www + https 非 www 为 https www

java - 如何使多个 tomcat web 应用程序可以访问空间沙箱应用程序的 solr 核心

apache - .htaccess 和重定向不存在的文件和目录

string - 在 .htaccess 中重写查询字符串