ugrás a tartalomhoz

CodeIgniter és az ő routes.php-je

castaw · 2013. Dec. 10. (K), 18.12
Sziasztok!

Ismerkedőfélben vagyok a CodeIgniterrel.

Van egy City controllerem (+ model, nézet)
Ez szépen olvas az adatbázisból és megjelenít.
Jelenleg így működik:
domain.hu/city?alias=kerekerdő
A cél az lenne hogy így is működjön:
domain.hu/kerekerdő

Így okoskodtam a routes.php-ban
$route["default_controller"] = "welcome";
$route["404_override"] = "";  
/**
 *  egyebek.... majd végül:
 **/     
$route["city"] = "city";
$route["(:any)"] = "city?alias=$1";
Ebben a formában 404-es hibát dob. Megakadtam.
Valaki tudna szöget ütni a fejembe? Előre is köszönöm.
 
1

Szép URL

Pepita · 2013. Dec. 10. (K), 20.28
Először is .htaccess:
<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteCond $1 !^(index\.php|publikus_mappa|favicon\.ico|robots\.txt|
                    meg még amit nem akarsz a CI-n keresztül engedni HTTP kérések)
  RewriteRule ^(.*)$ index.php?$1 [L]
</IfModule>
Itt a publikus_mappa könyvtáron belül akár alkönyvtárakban vannak a css-ek, js-ek, képek, stb. Ezeket nem akarjuk paraméterként az index.php-ra erőltetni, hanem engedjük kiszolgálni közvetlenül a kérést.

Ez kell ahhoz, hogy ne a ?-es querystring-et használd, hanem szépen / jelekkel add a paramétereket. Én így csinálom, tehát routingban is ehhez képest tudok segíteni.
Ezután a routs.php-d része:
$route["(:any)"] = "city/$1";
(Szerk.: ezzel vigyázz, mert az összes kérést odairányítja, ha több szabályod van, ez legyen az utolsó!)

Így domain.hu/kerekerdő kérésre a City controller kerekerdő fv-e fog futni, ha létezik.
De gondolom, hogy a controllernek van egy meghatározott fv-e (mondjuk oldal), ami paraméterként várná a kerekerdőt, akkor a routing:
$route["(:any)"] = "city/oldal/$1";
Nézd át jobban a manual-t, de szerintem (fejből) nem szép URL-eknél is /-el kell a szabályokat elválasztani, túl sokat akarsz dolgozni, pedig megcsinálja helyetted.

A szép URL-hez még javaslom a config.php ezen sorát és így:
$config['uri_protocol'] = 'AUTO';
Ekkor szinte minden apache-beállítás mellett műxik a szép URL is a fenti .htaccess résszel.

Szerk2.: én nem bajlódok ékezetes URL-ekkel, megszokta a magyar, hogy nincs, és sok böngészőben gond van vele. Emellett a PHP tudtommal nem engedi fv. névnek az ékezetet, tehát egy komolyabb oldalnál ezért is írhatod a millió routingot, ami csak lassítja a futást.
Én leginkább okosan tervezem a controllereket és fv-eiket, alig használok routingot, inkább csak hibaoldalra és default-ra, hogy az "üres" domain-re is jöjjön a főoldal.
2

Köszönöm, így utólag nézve

castaw · 2013. Dec. 11. (Sze), 12.02
Köszönöm, így utólag nézve teljesen logikus.
Bár nem írtam (mea culpa), hogy a szép url egyéb szükségeit már beállítgattam, de nem is baj mivel a Te htaccess-ed szebb is, jobb is.

Nem lesz sok route, négy vagy öt maximum.
Jelen esetben egy meglévő oldal alatt szeretném lecserélni a jelenlegi tartalomkezelőt egy saját rendszerre. Egyelőre elég biztatóan néz ki, nagyjából harmad annyi memóriával és adatbázis kéréssel beéri.

Az ékezetes urlt itt a google szokta már meg, ezért nem szeretnék ezen változtatni. De nem is okoz különösebb problémát a kezelése.
3

Szívesen

Pepita · 2013. Dec. 11. (Sze), 12.29
így utólag nézve teljesen logikus
Az jó, de remélem az Apache és a CI manualjában is utánaolvastál / olvasol, hogy teljesen tiszta legyen.
Egyelőre elég biztatóan néz ki, nagyjából harmad annyi memóriával és adatbázis kéréssel beéri.
Én is pont ezért használom a CI-t, vannak akik nagy terhelésű rendszert is csinálnak vele.
Az ékezetes urlt itt a google szokta már meg...
Ezzel kapcsolatban, ha kész vagy, esetleg írhatnál egy blogot a buktatókról, mire kell figyelni, stb. Érdekelne. Asszem valakinek már volt gondja böngészőkben vele, azért ódzkodok tőle, de hátha meggyőzöl... :)