如何通过mod_rewrite考虑修改时间(mtime)

时间:2012-01-27 06:35:02

标签: mod-rewrite

是否可以通过mod_rewrite考虑文件的修改时间(mtime)?

我想做的是:

  • 访问'* .html'时:
    • 当它存在时返回'* .html'并且比'* .html.eruby'更新。
    • 当'* .html'不存在或比'* .html.eruby'旧时,重写为'* .html.eruby'。

我的.htaccess:

## inhibit direct access to *.eruby
RewriteRule \.eruby$ - [R=404,L]

## rewrite *.html into *.html.eruby when *.html.eruby exists
## (TODO: rewrite only when *.html.eruby is newer than *.html)
RewriteCond %{REQUEST_FILENAME}.eruby -s
RewriteRule ^(.*)$  $1.eruby

1 个答案:

答案 0 :(得分:1)

当然有一个解决方案。我卖它10亿美元(亲密朋友的价格)。开个玩笑。

要解决此问题,请使用执行外部“过滤器”的RewriteMap指令。见here。 从网站上,重点关注您的外观:

  

外部重写计划

     

MapType:prg,MapSource:Unix文件系统到有效常规文件的路径这里的源是程序,而不是映射文件。要创建,你可以   使用您选择的语言,但结果必须是可执行文件   程序(对象代码或带有魔术cookie技巧的脚本)   '#!/ path / to / interpreter'作为第一行。)

     

该程序在Apache服务器启动时启动一次,并且   然后通过其stdin和stdout与重写引擎通信   文件句柄。

所以我的建议是:在python中创建一个非常简单的程序来比较两个文件的时间戳。

请参阅here for a sample in Perl