У меня есть система кэширования 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 / ... я получаю этот файл cached / thedirectory.html.
Как бы я перенаправил такой запрос в нужный файл?
Спасибо.
PS: я в основном следовал этой статье , чтобы реализовать мой кеш. Я использую файлы Zend Cache только в пользовательских приложениях php.
EDIT:
Я думаю, что нет хорошего способа заставить это работать без редактирования файлов 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 для каталогов.