Tomasz Nowak

Tomasz Nowak, shadow_no aka shad.pl

KohanaPHP v2.3.4 + lighttpd + mod_rewrite = ?

2 komentarze

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

Dodaj do:
  • BLIP - Bardzo Lubię Informować Przyjaciół
  • Wrzuć to na Flakera - powiadom swoich Znajomych
  • Twitter
  • Facebook
  • Wykop
  • del.icio.us
  • Google Bookmarks
  • Co-Robie.pl | Co teraz robisz?
  • PDF
  • email

Autor: shadow_no

04/02/2010 @ 13:20

2 odpowiedzi to 'KohanaPHP v2.3.4 + lighttpd + mod_rewrite = ?'

Subscribe to comments with RSS or TrackBack to 'KohanaPHP v2.3.4 + lighttpd + mod_rewrite = ?'.

  1. 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

  2. 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

Leave a Reply