Tomasz Nowak

Tomasz Nowak, shadow_no aka shad.pl

Archive for the ‘Linux’ Category

KohanaPHP v2.3.4 + lighttpd + mod_rewrite = ?

2 comments

Zacząłem uczyć się tworzenia stron korzystając z poleconego przez znajomych frameworku KohanaPHP. Po drugim dniu czytania dokumentacji, poznawania funkcji i pisanie byle czego – doszedłem do momentu w którym na dłuższą chwilę się zawiesiłem.

Chodzi o estetykę. A jak… Kohana* defaultowo tworzy dość mało eleganckie URLe w postaci: http://localhost/index.php/kontroler/akcja… O ile stronę główną możemy przeboleć, to już dziwnie wygląda podstrona np. kontakt: http://localhost/index.php/contact

W przypadku apache wszystko jest jasne. Wystarczy skorzystać z oficjalnego tutoriala. Jeżeli korzystamy jednak z serwera lighttpd natrafiamy na schodki. W sieci znalazłem kilka przykładów, które skutecznie wyrzucają index.php z URLi. Teoretycznie sprawę można uznać za zamkniętą stosując kod

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

Niestety takie rozwiązanie jest dobre do czasu do kiedy nie będziemy musieli dostać się do któregoś z folderów. Jeżeli nasz projekt zakłada upload jakichś plików do których będziemy musieli się dostać, zostaniemy przekierowany zgodnie z mod_rewrite które ustawiliśmy w sposób: http://localhost/index.php/sciezka/do/pliku. Jak zatem wygląda rozwiązanie? Po przejrzeniu dokumentacji lighttpd znalazłem magiczne wyrażenie: (?!expression). Wystarczy trochę przerobić nasz powyższy kod, aby umożliwić serwerowi ‘porzucenie’ przekierowań dla poszczególnych plików/folderów. Kod po modyfikacji powinien wyglądać mniej więcej tak jak poniżej. Jako przykładowe dane umieściłem adresy tej strony:

$HTTP["host"] =~ "^(www\.|)shad.pl$"
{
 server.document-root = "/home/shad/public_html/shad"
 url.rewrite-once = (
 "^/((?!(folder/|folder2/)).*)$" => "index.php/shad/$1"
 )
}

Teraz jedynie kasujemy wpis index.php z pliku application/config/config.php aby wyglądał tak:

$config['index_page'] = '';

I zresetujmy nasz serwer

 /etc/init.d/lighttpd restart

Mam nadzieję, że komuś się przyda.

-

* googlując dowiedziałem się przypadkiem, że poprawna wymowa to: koana

Written by shadow_no

Luty 4th, 2010 at 1:20 pm