| Новости | FAQ | Авторы | Документация | В действии | Библиотека |
| Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
G100m 12.12.2002 16:34
Я просто хочу с использованием parser-а формировать ЧПУhttp://www.bla-bla-bla/lib/bulhgakov/fatal_eggs/Запрос идет на сервер
RewriteEngine on RewriteRule !\.(gif|jpg|png|css)$ /redirect.htmlЗапрос передается парсеру, который пытается сформировать запрос к базе данных или обработать xml или text файл:
@redirect[]
# Тут что-то типо защиты
# Получаем запрошенный путь
$uri_request[$request:uri]
# Находим длинну строки
$uri_request_length[^uri_request.length[]]
# Если строка больше, чем 100 знаков
^if(${uri_request_length} > 100){
# Посылаем пользователю привет
^fack[]
}{
# Посылаем парсеру строку
^redirect_second_step[]
}
@redirect_second_step[]
# Вычислям $section_match
^if(in "/lib"){
# LIB/bulhgakov
^if(in "/lib/bulhgakov"){
^if(^uri_request.match[(lib/bulhgakov)\/.+][i]){$section_match[lib/bulhgakov/*]}{$section_match[lib/bulhgakov/]}
}{$section_match[lib]}
# LIB/pushkin
^if(in "/lib/pushkin"){
^if(^uri_request.match[(lib/pushkin)\/.+][i]){$section_match[lib/pushkin/*]}{$section_match[lib/pushkin/]}
}{$section_match[lib]}
}
# Определяем значения переменным, изходя из $section_match
^switch[$section_match]{
# Это корень lib
^case[lib]{$section_static[lib] $directory[root]}
# Это корень lib_bulhgakov
^case[lib/bulhgakov]{$section_static[lib_bulhgakov] $directory[root]}
# Это раздел bulhgakov
^case[lib/bulhgakov/*]{$section_static[lib_bulhgakov] $directory[not_root]}
# Это корень lib_pushkin
^case[lib/pushkin]{$section_static[lib_pushkin] $directory[root]}
# Это раздел pushkin
^case[lib/pushkin/*]{$section_static[lib_pushkin] $directory[not_root]}
# Если ничего похожего нет
^case[DEFAULT]{^fack[]}
}
# Проверям, что выдавать - корень или запрос
^if(${directory} eq root){
^shablon_root[$section_static]
}{
$request_to_shablon[^uri_request.match[(.+?)(\d+)(.?)][i]{$match.2}]
^shablon[$directory;$request_to_shablon]
}Все очень глупо длинно и не автоматизированно