要求されたページがキャッシュに存在するかどうかを確認する .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 ファイルが存在する物理パスであるとは限りません。
[/編集]
代替案なども教えていただけると幸いです。みんな、ありがとう!