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

Mały flajm
A czemu nie Ruby on Rails? I w ogóle KohanaPHP i PHP?
W RoR przyjemniejsza praca i bardziej przyszłościowa.
Btw. http://rubyhacker.com/ruby37.html
Pozdrawiam,
Marcin
h13ronim
9 10 at 07:33
Miałem taki zamiar, zabrać się za RoR/grailsa ale po kilku próbach stwierdziłem, że łatwiej będzie mi poruszać się po PHP. Przynajmniej na początku.
shadow_no
9 10 at 13:32