У меня есть система кеширования файлов для приложения php. если файл нуждается в кэшировании, я сохраняю его в директорию кэша в виде плоского html, имитирующего структуру каталогов request_uri
как я могу проверить с помощью htaccess, есть ли плоский файл в этом каталоге, прежде чем продолжить как обычно? в настоящее время я проверяю с помощью php, но в идеале, если есть кэшированный файл, я бы хотел, чтобы серверный код не выполнялся по этому запросу.
моя текущая установка направляет все через индексный файл, а затем php определяет, какие файлы включить на основе uri.
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
так сказать, что запрос пришел как
http://localhost/posts/45/the-name-of-my-post/
or
http://localhost/posts/45/the-name-of-my-post
как мне проверить, есть ли плоский html-файл, расположенный в
app/tmp/cache/posts/45/the-name-of-my-post/index.html
спасибо и извините, если это глупый вопрос, я новичок с правилами переписывания. Если у кого-то есть идея, как исключить php-код из кэшированного запроса, я открыт для всего.
хорошо, сейчас пытаюсь
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond ^app/tmp/cache/%{REQUEST_URI} -d
RewriteRule (.*) ^app/tmp/cache/%{REQUEST_URI}
# map everything to the index file
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond ^app/tmp/cache/%{REQUEST_URI} !-d
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
попробовал это, но, кажется, работает, что я пропускаю?
мой запрос
http://localhost/posts/view/23/another-post/
пытается служить до
http://localhost/app/tmp/cache/posts/view/23/another-post/