【发布时间】:2020-03-17 08:34:58
【问题描述】:
我有 php 处理的网页。当他们完成处理后,我得到一个 html 文件输出。该文件保存在名为“cache”的目录中。
例如
www.domain.tld/list.html (browser-url)
www.domain.tld/cache/list.html (cached-file)
我的实际问题是,我不知道如何更改 htaccess 文件来解决问题。
我如何应用 RewriteCond 将首先检查“/list.html”文件是否存在于该文件夹(缓存)中,然后(如果是):返回文件并(如果不)继续到另一个最终将重定向到 index.php 的条件。
但我需要遵守规则,它必须检查文件是否仍然存在(没有那个缓存文件夹)
这会导致错误:
RewriteCond cache/%{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]
这怎么可能?
某些页面的处理时间约为 20-30 秒或更长时间。这就是为什么我想在处理后保存它们,然后交付已经完成的站点以节省时间。
【问题讨论】:
-
REQUEST_FILENAME可以包含 full 本地路径,如果此时已经确定的话 - 所以前缀cache/不会导致任何位置在这种情况下有意义。请尝试在此处使用REQUEST_URI,这是请求的 URL 路径,因此在本例中为/list.html。