htaccess提供缓存文件

时间:2010-02-28 01:40:14

标签: php .htaccess mod-rewrite caching

我有一个用于php应用程序的文件缓存系统。如果文件需要缓存我将其保存到缓存目录,因为平面html模仿request_uri的目录结构

如果在缓存目录中有平面文件之前我怎么能检查htaccess?目前我检查PHP,但理想情况下,如果有一个缓存文件,我希望没有服务器端代码运行该请求。

我当前的设置通过索引文件路由所有内容,然后php根据uri确定要包含的文件。

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]

所以说请求是以

的形式出现的
http://localhost/posts/45/the-name-of-my-post/
or
http://localhost/posts/45/the-name-of-my-post

我如何检查

中是否有平坦的html文件
app/tmp/cache/posts/45/the-name-of-my-post/index.html

感谢和抱歉,如果这是一个愚蠢的问题,我相当新手有重写规则。如果有人有更好的想法如何从缓存的请求中消除PHP代码,我可以打开任何东西。

好的,现在尝试

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond ^app/tmp/cache/%{REQUEST_URI} -d
RewriteRule (.*) ^app/tmp/cache/%{REQUEST_URI}

# map everything to the index file

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond ^app/tmp/cache/%{REQUEST_URI} !-d
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]

试过这个,但似乎工作,我在俯视什么?

我的要求是

 http://localhost/posts/view/23/another-post/

尝试提升

http://localhost/app/tmp/cache/posts/view/23/another-post/

2 个答案:

答案 0 :(得分:1)

试试这个:

RewriteCond app/tmp/cache/%{REQUEST_URI} -d
RewriteRule (.*) app/tmp/cache/%{REQUEST_URI}/

答案 1 :(得分:0)

RewriteCond %{REQUEST_FILENAME} !-f

该声明已经说“如果请求的文件不存在则转到下一个语句,否则检索它”