过去一天,我一直在使用.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]
这需要放在网站根文件夹中的.htaccess文件中。 如果放置在其他地方,可能需要进行一些调整。
规则将在重写之前检查缓存是否存在。
它将检查任何不存在的资源( “#对已经存在的文件不做任何事情”规则将不会传递对真实文件的请求)。
如果你愿意的话,你可以摆脱“#对已经存在的文件做任何事情”的规则 – 它仍然应该工作正常(可能需要这样做根据您的应用程序/网站的逻辑)。
如果/cache/
文件夹或任何其他文件夹不是实际的文件夹在一个网站的根,但别名,那么这很可能不会工作。