我正在编写一个 .htaccess 文件,它将检查请求的页面是否存在于缓存中。为了执行检查(并保存输入),我设置了一个带有缓存位置的 ENV 变量:
# all this works as I expect #
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /some/path/
RewriteRule ^(.*)$ - [E=rewritebase:/some/path/,E=cache:%{ENV:rewritebase}cache/]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}%{ENV:cache}$1\.html -f
RewriteRule ^(.*)$ $1\.html [L]
</IfModule>
如您所见,我还必须将一个 ENV 变量设置为“替代” RewriteBase 值。我宁愿不这样做,因为如果 RewriteBase 改变了,我也必须记住改变 ENV 变量。最终,这可能是其他人使用的 CMS 的一部分,我希望它的配置尽可能简单/直接,出错的机会最少。我希望能够只设置ENV:cache
变量而无需设置ENV:rewritebase
变量,就像这样(或类似的):
# doesn't work #
RewriteRule ^(.*)$ - [E=cache:%{RewriteBase}cache/]
正如暗示的那样,该cache/
目录将始终位于 RewriteBase 中指定的目录内。[编辑]
。. . 但是,它并不总是存在此 .htaccess 文件的物理路径。
[/编辑]
我也很乐意听到其他建议。谢谢大家!