htacces для обслуживания кэшированных файлов - PullRequest
1 голос
/ 28 февраля 2010

У меня есть система кеширования файлов для приложения 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/

Ответы [ 2 ]

1 голос
/ 28 февраля 2010

Попробуйте это:

RewriteCond app/tmp/cache/%{REQUEST_URI} -d
RewriteRule (.*) app/tmp/cache/%{REQUEST_URI}/
0 голосов
/ 28 февраля 2010

RewriteCond %{REQUEST_FILENAME} !-f

Это утверждение уже говорит: «Если запрошенный файл не существует, переходите к следующему утверждению, иначе получите его» * ​​1004 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...