首页 > 解决方案 > 如何使用重写,如果第一次重写没有产生结果(在不同的位置搜索)

问题描述

我使用以下重写规则从不同的目录中检索文件,并且效果很好:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^((ffmpeg|ffprobe|ffserver|ffplay)-[0-9]+-g[0-9a-z]+\.(?:7z|dmg))$  /pub/$2/snapshots/$1  [L]

但是,只保留了 30 个文件,/pub/$2/snapshots/$1并且旧文件被移动到不同的“归档”目录(例如/pub/archive/$1)。

/pub/archive/$1如果文件不再可用,有没有办法重写/pub/$2/snapshots/$1

标签: apachemod-rewrite

解决方案


没有人向您指出的是,根据文档RewriteConds 接受对RewriteRule. 因此,如果您当前正在测试请求不是常规文件,您将改为检查您的首选替换文件。对您的后备替换重复此操作。


编辑:您评论中的RewriteConds 没有意义,第一部分应该是测试的主题,第二部分应该是测试。您将反向引用放在主题中的规则。显然,你已经尝试过了,试试这个:

RewriteCond /pub/$1/snapshots/$0 -f
RewriteRule ^(ffmpeg|ffprobe|ffserver|ffplay)-[0-9]+-g[0-9a-z]+\.(?:7z|dmg)$  /pub/$1/snapshots/$0  [END]
RewriteCond /pub/archive/$0 -f
RewriteRule ^(?:ffmpeg|ffprobe|ffserver|ffplay)-[0-9]+-g[0-9a-z]+\.(?:7z|dmg)$  /pub/archive/$0  [END]

推荐阅读