如何使用.htaccess检查文件是否存在于缓存中,如果不存在则加载正常脚本

ccrfmcuu  于 2023-02-09  发布在  其他
关注(0)|答案(1)|浏览(166)

过去一天我一直在摆弄.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/

我一直在努力解决这个问题,任何帮助都将不胜感激。

ikfrs5lh

ikfrs5lh1#

使用以下规则:

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]

1.这需要放置在.htaccess文件在网站根文件夹。如果放置在其他地方可能需要一些调整。
1.规则将在重写之前检查缓存是否存在。
1.它将检查不存在的任何资源("# do not do anything for already existing files” 规则不会传递对真实的文件的请求)。
1.如果你愿意,你可以摆脱 "#不要对已经存在的文件做任何事情” 规则--它仍然应该工作正常(根据你的应用程序/网站逻辑,可能需要这样做)。
1.如果/cache/文件夹或任何其他文件夹的问题不是实际的文件夹内的网站根目录,但别名,那么这很可能不会工作。

相关问题