我在玩缓存。我想要的是以下逻辑:
if ( file_exist(/cache/$request_uri.txt) ){
1. show that file
2. Stop all rewrite actions, but perform other actions (like charset, error_pages)
}
else{
do whatever you normally do
}
小例子。我有以下文件
http://domain.com/example-123.htm(请求的页面)
http://domain.com/cache/example-123.htm.txt(该页面的缓存版本)
http://domain.com/someDir/example-456.htm(请求的页面)
http://domain.com/cache/someDir/example-456.htm.txt(该页面的缓存版本)
我不想让 index.php 解析 url 并构建页面,而是想显示该文件并停止。
我虽然会这样做,但它不会:
RewriteCond ^cache%{REQUEST_URI}\.txt -f # check if the file exists in cache dir
RewriteRule ^(.*) /cache/$1\.txt [L] # i so, rewrite rule to it and stop
根据[L]
我的备忘单,“最后停止处理规则”确实如此。如果这仅意味着重写规则,那就是我所需要的。
我不能让它工作,我可以用正确的方向推动:)
我已将答案标记为解决方案,并做了应该做的事情。我希望在 .htaccess 文件中使用它的原因是因为这样我的 index.php 不会被调用,数据库也不会被调用。一种非常快速和轻便的方法。
但是,这会产生一个新问题:某些项目(如菜单)可以(经常)更改。这意味着我必须在每次更改时删除所有缓存文件,这会阻止它高效工作。
为了解决这个问题,我打算看看我是否可以使用一些聪明的 .shtml 文件来解决这个问题(可能需要允许 php 在 shtml 文件中使用)。
一旦我有一些对感兴趣的人有用的东西,我会立即更新这篇文章