« 1C-ники откакэ!



Регулярные выражения для чайников »



Для клиента
Пользователь:
Пароль:
 

Генерация статичного образа сайта и mod_rewrite

Категория: / Mine блог / PHP (LAMP)
Имеем cms. Для уменьшения нагрузки для модуля страниц добавим возможность сохранения статичных копий в виде

 
/site_root/static/%host%/путь/до/страницы/в/cms/index.html # для папок
/site_root/static/%host%/путь/до/страницы/в/cms/страница.html # для страниц
 


Кэш есть, теперь можно завернуть анонимусов на адрес статичной странцы.
Делаем это с помощью mod_rewrite.

 
# такие пути не реврайтим
RewriteCond %{REQUEST_URI} !^\/$           
RewriteRule !(\/|\.html|\.php)$ - [L]
 
# работаем только с анонимусами
RewriteCond %{HTTP_COOKIE} !user_logged_in
RewriteRule ^ - [S=3]
 
# отдача статичного кэша
# это существующие страницы
RewriteCond %{DOCUMENT_ROOT}/static/%{HTTP_HOST}/%{REQUEST_URI} -f
RewriteRule ^(.*) /static/%{HTTP_HOST}/$1 [L]     
# это папки, добавляем index.html
RewriteCond %{DOCUMENT_ROOT}/static/%{HTTP_HOST}/%{REQUEST_URI} -d
RewriteCond %{DOCUMENT_ROOT}/static/%{HTTP_HOST}/%{REQUEST_URI}/index.html -f
RewriteRule ^(.*) /static/%{HTTP_HOST}/$1 [L]         
# это условие для главной
RewriteCond %{REQUEST_URI} ^\/$
RewriteCond %{DOCUMENT_ROOT}/static/%{HTTP_HOST}/index.html -f
RewriteRule .* /static/%{HTTP_HOST}/index.html [L]
 


Замечание:
Движок работает с данными в кодировке UTF-8.

Если пути содержат кириллицу, то в windows нужно предварительно перед сохранением статичных файлов, перекодировать их имена в CP-1251,
тогда проверка RewriteCond на наличие файла будет срабатывать.

С другой стороны, в системе FreeBSD 6, имена файлов нужно преобразовать в кодировку UTF-8. Разобраться почему, можно смотря лог преобразований mod_rewrite.

 
[test.local/sid#815bdd8][rid#8317058/initial] (3) [perdir /www/test.local/htdocs/] add path info postfix: /www/test.local/htdocs/двигатель -> /www/test.local/htdocs/двигатель/
[test.local/sid#815bdd8][rid#8317058/initial] (3) [perdir /www/test.local/htdocs/] strip per-dir prefix: /www/test.local/htdocs/двигатель/ -> двигатель/
[test.local/sid#815bdd8][rid#8317058/initial] (3) [perdir /www/test.local/htdocs/] applying pattern '^(.*)index\.(php|html)$' to uri 'двигатель/'
 

@author: surg30n
@date: Вторник, 22 Март 2011


Комментарии : Нет


Комментировать:




Код подтверждения: *
Введите подтверждающий код, так же как он отображен на картинке.
Надоело разбирать числа на картинке? Зарегистрируся, докажи что ты не робот!

@СКАЖИРЕКЛАМЕНЕТ@