我知道,我们可以很容易地立足于任何HTTP 请求头中的RewriteCond。 但是,我们可以检查(部分)的响应头是将要发送? 特别是, 上次修改吗?
我想重写URL仅在最后修改日期为30分钟以上老年人和我试图避免委托,办理入住手续的PHP文件要求从该目录中的文件每一次的开销。
提前致谢!
我知道,我们可以很容易地立足于任何HTTP 请求头中的RewriteCond。 但是,我们可以检查(部分)的响应头是将要发送? 特别是, 上次修改吗?
我想重写URL仅在最后修改日期为30分钟以上老年人和我试图避免委托,办理入住手续的PHP文件要求从该目录中的文件每一次的开销。
提前致谢!
出站头不存在,直到much
晚于mod_rewrite
行事。 目前也没有任何文件修改时间检查内置功能mod_rewrite
,所以你会得到使用,它正在一个最接近RewriteMap指令的外部重写程序品种,以找出是否有问题的文件已被修改。
如果我没有理解你的应用程序,你也可以考虑有一个cron作业,该目录中年纪超过30分钟,删除文件,然后重写一个文件不存在的条件。
不,那是不可能的。 但是你可以使用一个重写映射来得到一个程序,信息比PHP开销少,可能是shell脚本。
下面是一个例子bash脚本:
#!/usr/bin/env bash
while read line; do
max_age=${line%%:*}
filename=${line#*:}
if [[ -f $filename ]]; then
lm=$(stat -f %m "$filename")
if [[ $(date +%s)-$lm -le $max_age ]]; then
echo yes
else
echo no
fi
else
echo no
fi
done
需要重写地图的声明放置在您的服务器或虚拟主机configuraion文件作为程序刚启动一次,然后等待输入:
RewriteMap last-modified-within prg:/absolute/file/system/path/to/last-modified-within.sh
然后你可以使用重写映射像这样(的.htaccess为例):
RewriteCond %{last-modified-within:30:%{REQUEST_FILENAME}} =yes
RewriteRule ^foo/bar$ - [L]
RewriteRule ^foo/bar$ script.php [L]
你有没有考虑使用mod_proxy,mod_cache的,和/或鱿鱼? 这听起来像你想推出自己的缓存...