过去一天我一直在摆弄 .htaccess 文件,但只取得了一定的成功。我编写了一个缓存脚本,它生成每个页面的缓存版本并将其存储在www.mysite.com/cache/
并保持与实际文件相同的目录结构,但在末尾添加了 .html。因此,如果实际文件是:
www.mysite.com/blue/turtleneck
缓存文件将是:
www.mysite.com/cache/blue/turtleneck.html
我需要检查缓存的版本是否存在,如果存在,则加载它。如果它不存在,我需要加载实际的文件。另外,我需要某种方法来强制它加载非缓存版本。我在想也许添加/nocache/
添加到 URL 末尾以加载非缓存副本。例子:
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]
这需要放置在网站根文件夹中的 .htaccess 文件中。如果放置在其他地方,可能需要进行一些调整。
该规则将在重写之前检查缓存是否存在。
它将检查任何不存在的资源(“#不对已经存在的文件执行任何操作”到目前为止,规则不会传递对真实文件的请求)。
如果你愿意,你可以摆脱“#不对已经存在的文件执行任何操作”规则——它仍然应该可以正常工作(根据您的应用程序/网站逻辑可能需要这样做)。
If /cache/
文件夹或任何其他有问题的文件夹不是网站根目录中的实际文件夹而是别名,那么这很可能不起作用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)