RkBlog

Hardware, programming and astronomy tutorials and reviews.

Struktura URLi Code Ignitera

Cele

- Poznanie budowy linków URL frameworka
- Poznanie sposobów ich modyfikacji
CI używa przyjaznego wyszukiwarkom i ludziom mapowania adresów URL i zmiennych. Podstawowy link w CI ma postać
www.strona.pl/index.php/klasa/metoda/
www.strona.pl/index.php/klasa/metoda/parametr/ ....
Gdzie klasa oznacza klasę (kontroler) jaka ma być wywołana, metoda - nazwa wybranej metody tejże klasy, a parametry, których może być wiele są przekazywane do metody.
Z adresu URL można pozbyć się "index.php" w celu osiągnięcia jeszcze ładniejszych URLi. By to zrobić musimy wykorzystać mod_rewrite serwera Apache. Na większości hostów będzie to działało lecz nie wszędzie. W głównym katalogu CI (tam gdzie jest index.php) umieść plik .htaccess (z kropką na początku) o zawartości:
RewriteEngine on
RewriteCond $1 !^([a-zA-z0-9/])
RewriteRule ^(.*)$ index.php [L]
RewriteCond $1 !^(index.php|images|robots.txt|system|user_guide)
RewriteRule ^(.*)$ index.php/$1 [L]
- Jeżeli widzisz teraz "INTERIAL SERVER ERROR" to znaczy iż serwer nie dopuszcza pliku .htaccess lub jego zawartości. Usuń go, nie możesz skorzystać z mod_rewrite
Jeżeli nie ma błędu serwera to trzeba sprawdzić czy mod_rewrite mimo wszystko działa. W poprzednim artykule mieliśmy testowy przykład pod linkiem index.php/test/ - sprawdź teraz czy zadziała link /test/ (np.: http://localhost/html/ci/test/ lub http://localhost/html/ci/test). Jeżeli działa to mod_rewrite działa i można z niego skorzystać, jeżeli nie to niestety nie pozbędziemy się index.php z linków. Dalej omawiane przykłady nie będą zawierały tej modyfikacji :)
Code Igniter jest trochę oporny jeżeli chodzi o współpracę z mod_rewrite. Jeżeli masz problemy to nie stosuj skróconych linków.

Sufiksy URLi

W pliku config/config.php naszej aplikacji możemy podać sufiks URL czyli coś co dodane będzie na końcu ścieżki "zmiennych". Znajdź $config['url_suffix'] = ""; i wstaw jakąś wartość, np: $config['url_suffix'] = ".html"; - teraz również linki typu:
http://localhost/html/ci/test.html
http://localhost/html/ci/test/.html
Będą działały. Oczywiście wersja bez końcowego ukośnika jest bardziej normalna. Notka: niektóre przeglądarki czy inne programy mogą zwariować jeżeli ustawisz "dziwny" sufiks.
RkBlog

Kurs Code Igniter, 14 July 2008, Piotr Maliński

Comment article