私はPHPのキャッシュシステム(Zend Static Cacheに基づいている)...動的ページから静的なHTMLファイルを作成します。 REQUEST_URIを使用してファイル名を作成します。
このようなREQUEST_URIの場合/somedir/otherdir/file.html
これは/cached/somedir/otherdir/file.htmlのように(私のサーバ上の)キャッシュされたディレクトリにファイルを作成します。
私はhtaccessを使用して、将来のリクエストを静的ファイルにリダイレクトします(存在する場合)。
RewriteCond %{DOCUMENT_ROOT}/cached/%{REQUEST_URI}\.html -f
RewriteRule .* /cached/%{REQUEST_URI}\.html [L]
私が抱えている問題は、REQUEST_URIが "/"(基本的にディレクトリ)で終わると、キャッシュはthedirectory.htmlという名前のファイルを生成するということです。
したがって、REQUEST_URIが/ thedirectory/...の場合、このファイルは/directory.htmlにキャッシュされます。
このような要求を適切なファイルにリダイレクトするにはどうすればよいでしょうか。
Thanks.
PS: I've basically followed this article to implement my cache. I'm using the Zend Cache files only on a custom PHP app.
編集:
PHPファイルを編集せずにこの作業をする良い方法はないと思います。
Zend Cacheの使い方は次のとおりです。
$tagCache = Zend_Cache::factory('Core', 'File', array('automatic_serialization' => true),
array('cache_dir' => $cfg['instdir']. 'Cache_dir'));
$cache = Zend_Cache::factory('Capture', 'Static', array(), array('public_dir' => $cfg['instdir']. 'Cached/',
'tag_cache' => $tagCache));
$id = bin2hex($name);
$cache->start($id, array());
どのファイルがキャッシュファイル名を生成するためのコードを保持する可能性が高いかを知っていますか?私はいくつかのフロントエンド、バックエンドを編集しましたが、何も起こっていないようです。
私は(ZENDがREQUEST_URIを取得する直前に)何かをしようとしています:
if(substr($_SERVER["REQUEST_URI"],strlen($_SERVER["REQUEST_URI"])-1,1)=="/")
{
$ _SERVER ["REQUEST_URI"] = $ _ SERVER ["REQUEST_URI"]。 "index.html";
}
また、キャッシュにディレクトリ用のindex.htmlファイルを追加します。