我想为以下情况创建 .htaccess 规则:
- 我有一个文件链接:http://something.com/images/some/image_001.png
- 如果此文件不存在我想重定向到 /images/some 目录中的最新文件
使用 .htaccess 可以实现这样的效果吗?我知道我可以使用 RewriteCond 检查文件是否存在,但不知道是否可以重定向到最新文件。
答案1
对于此问题,没有纯粹的 mod_rewrite 解决方案。最接近的解决方案可能是使用 指向RewriteMap
始终返回 中最新文件的脚本。无论输入是什么,/images/some
像这样的简单脚本将始终输出 中的最新文件:/images/some
#!/bin/bash
while read in
do
find /path/to/images/some/ -maxdepth 1 -type f -exec ls -t1 {} + | head -1 | sed -e 's|/path/to/images/some/||g'
done
如果您在服务器或 vhost 配置中设置地图(不能在 htaccess 中声明地图):
RewriteMap latest prg:/path/to/script.sh
你可以像这样调用它:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/?images/some/(.*)$ /images/some/${latest:$1} [L,R=301]
当然,这不是很有效,你最好只编写一个 php 路由脚本并将所有内容引导到该脚本而不是地图上。