过去一天我一直在使用.htaccess文件,但只取得了一定的成功。我编写了一个缓存脚本,它生成每个页面的缓存版本并将其存储在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/
我一直在努力解决这个问题,非常感谢任何帮助。
答案 0 :(得分:3)
使用以下规则:
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]
这需要放在网站根文件夹中的.htaccess文件中。如果放在其他地方,可能需要进行一些调整。
规则将在重写之前检查缓存是否存在。
它将检查不存在的任何资源(“#不对现有文件执行任何操作”规则将不会传递对真实文件的请求)。
如果您愿意,您可以摆脱“#不对现有文件执行任何操作”规则 - 它仍然可以正常工作(可能需要这样做在你的应用程序/网站逻辑上。)
如果/cache/
文件夹或任何其他文件夹不是网站根目录中的实际文件夹而是别名,那么这很可能无效。