我有一个用于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/
答案 0 :(得分:1)
试试这个:
RewriteCond app/tmp/cache/%{REQUEST_URI} -d
RewriteRule (.*) app/tmp/cache/%{REQUEST_URI}/
答案 1 :(得分:0)
RewriteCond %{REQUEST_FILENAME} !-f
该声明已经说“如果请求的文件不存在则转到下一个语句,否则检索它”