volkoff@home

Начало » Заметки

16 Апреля 2009

TXP + lighttpd = Чистые ссылки

Да, плюс ещё прямые руки )
И без подсовывания обработчика 404!

Вот здесь нашёл пример, как реализуется субж. Чуть-чуть его расширил под свою файловую структуру и добавил обработку редиректов.

Для начала в /opt/etc/lighttpd/lighttpd.conf включаем (раскомментируем) загрузку mod_rewrite и mod_redirect:

server.modules   = (                                                 
     "mod_rewrite",                                  
     "mod_redirect",   
 .......
)

Потом добавляем такие правила:

url.rewrite-once = (
       "^/files/.*" => "$0",
       "^/images/.*" => "$0",
       "^/rpc/.*" => "$0",
       ... другие папки ...
       "^/textpattern/.*" => "$0",
       "^(.*)$" => "/index.php/$1"
)

Этим мы сохранили обращения к перечисленным папкам напрямую, а все остальные запросы будет обрабатывать наш index.php. Можно смело идти в админку и включать понравившийся "Режим постоянных ссылок". Например, у меня сейчас режим /section/title.

Вторая задача. Бывает необходимо сохранить некий старый урл, уже раскрученный на других сайтах, и перенаправить его на новый урл в новой структуре сайта.

Например, по гугловскому скану я обнаружил, что достаточно много ресурсов ссылаются на страничку www.volkoff.ru/products.php, которой больше не существует. Но теперь у меня есть секция проектов, куда я хочу перенаправить эти обращения. Это делается так:

url.rewrite-once = (
 ....
       "^/products.php$" => "$0",
 ....
       "^(.*)$" => "/index.php/$1"
)

url.redirect = (
       "^/products.php$" => "/projects/"
)

И вуаля.

Напоследок ещё одна красивость. Таки подсунем свой обработчик 404 для обращений к несуществующим файлам (не только txp-статьям!) вместо штатного вебсерверского:

## error-handler for status 404   
#server.error-handler-404   = "/error-handler.html"            
server.error-handler-404   = "/index.php?id=-1"

Т.е. мы провоцируем его открыть несуществующую статью с номером -1, и он нам выдаст txp-страницу error-default, которой мы можем придать кошерный вид в админке.

Комментарии

  1. В Apache это modrewrite? Знакомо.

    — kabazyaba 09.05.29, 14:57 #

  2. ага

    — Alexey 10.02.05, 20:19 #