Apache 如何使用.htaccess检查缓存中是否存在文件,如果不存在,请加载普通脚本
在过去的一天里,我一直在摆弄.htaccess文件,但只取得了一些小的成功。我编写了一个缓存脚本,生成每个页面的缓存版本,并将其存储在Apache 如何使用.htaccess检查缓存中是否存在文件,如果不存在,请加载普通脚本,apache,.htaccess,caching,Apache,.htaccess,Caching,在过去的一天里,我一直在摆弄.htaccess文件,但只取得了一些小的成功。我编写了一个缓存脚本,生成每个页面的缓存版本,并将其存储在www.mysite.com/cache/中,并维护实际文件的相同目录结构,但最后添加了.html。因此,如果实际文件是: www.mysite.com/blue/turtleneck 缓存文件将是: www.mysite.com/cache/blue/turtleneck.html 我需要检查缓存版本是否存在,如果存在,请加载它。如果它不存在,我需要加载实际
www.mysite.com/cache/
中,并维护实际文件的相同目录结构,但最后添加了.html。因此,如果实际文件是:
www.mysite.com/blue/turtleneck
缓存文件将是:
www.mysite.com/cache/blue/turtleneck.html
我需要检查缓存版本是否存在,如果存在,请加载它。如果它不存在,我需要加载实际的文件。另外,我需要一些方法来强制它加载非缓存版本。我在想也许可以在URL的末尾添加/nocache/
,以加载未缓存的副本。例如:
www.mysite.com/blue/turtleneck/nocache/
我一直在努力解决这个问题,非常感谢您的帮助。使用以下规则:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
# do not do anything for already existing files
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .+ - [L]
# serve cached file if exists
RewriteCond %{DOCUMENT_ROOT}/cache/$1.html -f
RewriteRule (.*) /cache/$1.html [L]
/cache/
文件夹或任何其他有问题的文件夹不是网站根目录中的实际文件夹,而是别名,那么这很可能不起作用到目前为止你有什么?我有:RewriteRule上的RewriteEngine^([^/\.]+)/?$cache/$1\.html[L]这很好用,但我需要它在子目录中工作,并且需要像你说的那样进行一些调整。