2012-02-15 2 views
0

У меня возникли проблемы с моей конфигурацией mod_rewrite, для решения «кеша», над которым я работаю. У меня есть каталог под названием «кеш» с скомпилированными файлами html. У меня также есть файл index.php, который обрабатывает все запросы.mod_rewrite: перенаправление на кеш или скрипт

Прямо сейчас все запросы переписываются в файл index.php, например: "/ articles" => index.php? Q = articles.

Но теперь я хочу переписать его в «cache/articles/index.html», если он существует, или просто отступить и переписать сценарий index.php.

Я немного перепутал с переписыванием, но я не могу заставить его работать. Код переписан будет выглядеть так (без чего-либо для кэша):

<IfModule mod_rewrite.c> 
RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !=/favicon.ico 
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] 

</IfModule> 

Заранее спасибо :)

+0

Какие ошибки вы получаете? Можете ли вы объяснить, что «не работает»? Что-нибудь в ваших журналах ошибок Apache? Можете ли вы опубликовать код .htaccess, который вы пытались использовать для кеша? –

+0

Какова ваша конкретная проблема при добавлении кеша? В какой момент вы еще не знаете? Какая прокси-url-имя файла использует ваш кеш? – hakre

+0

Возможный дубликат [RewriteRule файл проверки в rewriten пути к файлу существует] (http://stackoverflow.com/questions/470880/rewriterule-checking-file-in-rewriten-file-path-exists) – hakre

ответ

1

Попробуйте добавить следующее в .htaccess файл в корневом каталоге вашего сайта.

RewriteEngine on 
RewriteBase/

#if the index.html exists in the cache 
RewriteCond %{DOCUMENT_ROOT}/cache%{REQUEST_URI}/index.html -f [NC] 
#then display it 
RewriteRule^cache%{REQUEST_URI}/index.html [L] 

#other existing rules go here 
+0

Спасибо, что сделал мой день! :) – Jacob

Смежные вопросы