Apache mod_rewrite能否用于查找文件的旧版本?

Apache mod_rewrite能否用于查找文件的旧版本?,apache,.htaccess,mod-rewrite,redirect,mod-alias,Apache,.htaccess,Mod Rewrite,Redirect,Mod Alias,假设服务器上有四个文件,文件名中以某种方式包含日期: file_2014-01-20.txt file_2014-01-03.txt file_2014-01-02.txt file_2014-01-01.txt …并且服务器接收到对不存在的日期文件的请求: file_2014-01-10.txt …有没有办法使用mod_rewrite或其他.htaccess代码来查找比请求的文件旧的最新文件?例如,在这种情况下,它将返回文件\u 2014-01-03.txt,因为该文件是最新的现有文件,比

假设服务器上有四个文件,文件名中以某种方式包含日期:

file_2014-01-20.txt
file_2014-01-03.txt
file_2014-01-02.txt
file_2014-01-01.txt
…并且服务器接收到对不存在的日期文件的请求:

file_2014-01-10.txt
…有没有办法使用
mod_rewrite
或其他
.htaccess
代码来查找比请求的文件旧的最新文件?例如,在这种情况下,它将返回
文件\u 2014-01-03.txt
,因为该文件是最新的现有文件,比(不存在的)请求的文件旧

我知道我可以将所有404重定向到如下特殊脚本:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+) getarchive.php?request=$1
…其中
getarchive.php
将接受
request
并使用它查找并返回正确的文件。但是,出于几个原因,这对我来说不是一个好的解决方案,如果可能的话,我希望完全使用
.htaccess
进行重定向,而不使用任何服务器端脚本

编辑:

换一种方式来说,如果文件名不存在,当按字母顺序倒序排序时,是否可以使用Apache查找列表中的下一个文件

例如:

a.txt
b.txt
z.txt
如果请求
n.txt
,服务器将返回
b.txt

,您只需编写一个脚本就可以了。使用mod_rewrite进行日期比较,如果有人能做到这一点,听起来是个可怕的主意。您将如何为前几年编写代码?(如文件_2013-12-30.txt和文件_2014-01-30.txt)

mod_rewrite的功能完全不足以进行这种比较

您必须为年、月和日期创建分组,然后与它们进行比较,而不使用任何条件(mod_rewrite中没有If/then/Else,您必须每次为每个规则枚举所有可能的条件)或控制循环,而不使用任何算术函数,并且无法找到日期、日期/月或日期/月/年的次最低数字的文件。这意味着对于像
文件\u 2014-01-10.txt
这样的请求,您必须检查文件
文件\u 2014-01-09.txt
是否存在,然后如果
文件\u 2014-01-08.txt
存在,然后如果
文件\u 2014-01-07.txt
存在,等等。所有这些都不需要做任何数学运算


不是说不可能创造出一种聪明的方法来让一切都以某种方式运作,而是上帝保佑那些事后不得不对其进行调整的人。

只是出于好奇,处理前一年是否有什么不同于或比处理前一天或前一个月更困难的事情?这一切都是一样的,因为它们是按字母顺序排序的吗?“…而且没有办法找到下一个最低数字的文件…”——这是我希望可能实现的关键事情。感谢您的洞察力。@brentonstrine是的,您唯一可以使用的检查是字符串是否映射到现有文件(
-f
)、目录(
-d
)、符号链接、非空文件等。无法获取所有文件的列表并对其进行比较。