CodeIgniter basiert auf einem URL-Konzept. Das bedeutet, der Controller als zentrale Steuereinheit zwischen View und Model wird durch die Eingabe einer URL in die Suchleiste des Webbrowsers angesprochen. Entwickler erstellen dazu sogenannte Controller-Klassen (classes). Dabei handelt es sich um PHP-Dateien, die diverse Funktionen beinhalten, um Bibliotheken (libraries), Erweiterungen (plugins) oder Helfer-Klassen (helper) zu laden, Verbindungen zu Datenbanken herzustellen, ein Datenmodell einzubinden oder einen bestimmten View herauszusuchen.
Der Anwendungsfluss von CodeIgniter basiert dabei auf folgendem URL-Grundschema:
example.com/class/function/parameter
Auf die Domain (example.com) folgt eine Controller-Klasse, die angesprochen werden soll, sowie eine bestimmte Controller-Funktion. Den Abschluss bilden optionale Parameter. Diese dienen dazu, dem ausgewählten Controller IDs oder Variablen zu übergeben.
In der Praxis könnte eine CodeIgniter-URL wie folgt aussehen:
example.com/news/article/511
Eine solche URL spricht den Controller news auf der Domain example.com an und veranlasst diesen, die Funktion article auszuführen (beispielsweise, um einen gleichnamigen View für die Artikelansicht zu laden). Welche Inhalte über das Datenmodell aus der Datenbank abgerufen werden sollen, geben optionale Parameter an, die dem Controller mit der URL übergeben werden – in diesem Beispiel ein Artikel mit der ID 511.
In der Ausgangskonfiguration führt CodeIgniter die index.php in jeder Anwendungs-URL auf:
example.com/index.php/news/article/511
Diese PHP-Datei beinhaltet Informationen darüber, wo sich die Core-Dateien des Frameworks sowie eingebundene Bibliotheken, Erweiterungen oder Helfer-Klassen befinden und in welchem Verzeichnis die Applikationsdateien liegen. Die index.php dient somit der Initialisierung sämtlicher Basisressourcen.
Läuft CodeIgniter auf einem Apache HTTP Server, lässt sich die index.php via mod_rewrite aus den Anwendungs-URLs entfernen, um Endnutzern und Suchmaschinen-Crawlern „saubere“ Webadressen zur Verfügung zu stellen. Entwickler fügen dazu folgenden Codeblock in die .htaccess-Datei des Webservers ein: