Кэшировние с помощью mod_rewrite

Ufaweb
На сайте с 03.03.2008
Offline
182
612

Возникла такая мысль: складывать готовые странички в папку cache и, если запрашиваемая страница там есть, отдавать ее оттуда, а иначе - отдавать скрипту.

Составил такую конструкцию:

RewriteCond cache/%{REQUEST_FILENAME} !-s
RewriteRule ^(.+)$ index.php?url=$1

Не работает (в любом случае передает запрос скрипту). Попробовал по рекомендации с какого-то форума сделать так:

RewriteCond %{DOCUMENT_ROOT}/cache/%{REQUEST_FILENAME} !-s
RewriteRule ^(.+)$ index.php?url=$1

Тоже не работает. А вот так:

RewriteCond %{REQUEST_FILENAME} !-s
RewriteRule ^(.+)$ index.php?url=$1

работает, но это не то, что нужно... Как правильно реализовать?

aleksey_php
На сайте с 17.03.2008
Offline
53
#1

Посидел 3 часика над Вашей задачей. Вот решение:

RewriteEngine On

RewriteBase /

RewriteCond %{DOCUMENT_ROOT}/cache%{REQUEST_URI} -s
RewriteRule (.*) cache/$1 [L]
RewriteCond %{DOCUMENT_ROOT}/cache%{REQUEST_URI} !-s
RewriteCond %{REQUEST_FILENAME} !-s
RewriteRule ^(.*)$ index.php?url=$1 [L]

Не претендует на идеальное, но работает. При запросе урла http://site.ru/article.php сначала ищет этот файл в папке cache и если есть - то выводит его. Если файла нет, то выводит http://site.ru/index.php=article.php

Ufaweb
На сайте с 03.03.2008
Offline
182
#2

aleksey_php, огромное спасибо! :)

На пиво куда перевести? =)

aleksey_php
На сайте с 17.03.2008
Offline
53
#3

Был рад помочь. :)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий