我知道,我们可以很容易地在任何HTTP的请求标题碱基A的RewriteCond。但是,我们可以检查(部分)的响应以发送标头是要去哪里?特别地,在上次修改一个?

我想重写一个URL,只有当最后修改日期为30分钟以上老年人和我试图避免委托,办理入住手续的PHP文件,每一次从该目录中的文件的开销被请求。

提前感谢!

有帮助吗?

解决方案

出站头不存在,直到much晚于mod_rewrite行事。目前也没有任何文件修改时间检查建成mod_rewrite功能,所以最近你开始使用它制作的的外部重写程序多种以找出是否有问题的文件已被修改RewriteMap指令

如果我正确地理解你的应用程序,你也可以考虑有一个cron作业,该目录中年纪超过30分钟,删除文件,然后重写一个文件不存在的条件。

其他提示

没有,这是不可能的。但是你可以使用改写地图获得从该信息比PHP开销更少程序,也许外壳脚本。

下面是一个例子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的考虑,和/或鱿鱼?这听起来像你想推出自己的缓存...

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top