【发布时间】:2014-01-31 19:28:00
【问题描述】:
假设服务器上有四个文件以某种方式在文件名中包含日期:
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 代码使其找到比请求的文件更旧的最新文件?例如。在这种情况下,它将返回 file_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。
【问题讨论】:
标签: apache .htaccess mod-rewrite redirect mod-alias