Mod_rewrite для мультисайтового движка

koder_

Новичок
День добрый!
Ситуация следующая - есть мульти-сайтовый движок, тоесть физически один скрипт обрабатывает запросы с разных доменов и в зависимости от домена отдает какой-то контент.

Все страницы сайтов - кешируются.
Нужно сделать так, чтобы при запросе страницы, еще до запуска php проверялось наличие запрашиваемой страницы в кеше, ну и если страница есть - она показывается пользователю. Если нет - тогда уже запускается php.

Для каждого хоста свой каталог с кешем.
Путь - /content/[host]/[file]

Тоесть допустим при запросе страницы http://site.ru/css/style.css
сначала должно проверяться наличие файла /content/site.ru/css/style.css и если он есть - показывать его. Если нет - запустить engine.php

Вот мой .htaccess

DirectoryIndex engine.php
Options -Indexes
Options +FollowSymlinks

RewriteEngine On

RewriteCond %{DOCUMENT_ROOT}/content/%{HTTP_HOST}%{REQUEST_URI} -f
RewriteRule .* /content/%{HTTP_HOST}%{REQUEST_URI} [L]

RewriteRule .* engine.php [L]
но даже при наличии файла в кеше - всеравно запускается engine.php
Чтобы понять что в переменных - сделал так

RewriteRule .* engine.php?h=%{HTTP_HOST}&r=%{REQUEST_URI} [L]
Получил

Array
(
[h] => site.ru
[r] => /engine.php
)
Не могу понять почему в REQUEST_URI записан engine.php, а не запрашиваемый css.

Подскажите, что я не так делаю?
 

Вурдалак

Продвинутый новичок
Честно говоря, не знаю в чём у тебя ошибка, но разумнее было бы это решить с помощью nginx.

P.S. «Конструктор сайтов» ваяешь что ли?
 

koder_

Новичок
"Зеркальщик"

Ну на хостинге (а тесты провожу на простом хостинге) nginx не понастраиваешь. Да и просто разобраться охота
 

koder_

Новичок
Разобрался. просто потом еще второй круг идет и проверяется уже преобразованный урл.

Решение. На втором круге мы уже имеем реальный путь в переменной %{REQUEST_FILENAME}
Вот его и проверим
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule .* - [L]

RewriteCond %{DOCUMENT_ROOT}/content/%{HTTP_HOST}%{REQUEST_URI} !-f
RewriteRule .* engine.php?h=%{HTTP_HOST}&r=%{REQUEST_URI} [L]

RewriteRule .* /content/%{HTTP_HOST}%{REQUEST_URI} [L]
 
Сверху