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

过去一天,我一直在使用.htaccess文件,但只有适度的成功。 我编写了一个caching脚本,它生成每个页面的caching版本,并将其存储在www.mysite.com/cache/并且保持与实际文件相同的目录结构,但是它会将.html添加到最后。 所以如果实际的文件是:

 www.mysite.com/blue/turtleneck 

caching文件将是:

 www.mysite.com/cache/blue/turtleneck.html 

我需要检查caching版本是否存在,如果存在,请加载它。 如果它不存在,我需要加载实际的文件。 另外,我需要一些强制它加载非caching版本的方法。 我在想也许在URL的最后join/nocache/来加载/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] 
  1. 这需要放在网站根文件夹中的.htaccess文件中。 如果放置在其他地方,可能需要进行一些调整。

  2. 规则将在重写之前检查缓存是否存在。

  3. 它将检查任何不存在的资源( “#对已经存在的文件不做任何事情”规则将不会传递对真实文件的请求)。

  4. 如果你愿意的话,你可以摆脱“#对已经存在的文件做任何事情”的规则 – 它仍然应该工作正常(可能需要这样做根据您的应用程序/网站的逻辑)。

  5. 如果/cache/文件夹或任何其他文件夹不是实际的文件夹在一个网站的根,但别名,那么这很可能不会工作。