+ +
+

CodeIgniter URLs

+

By default, URLs in CodeIgniter are designed to be search-engine and +human friendly. Rather than using the standard “query string” approach +to URLs that is synonymous with dynamic systems, CodeIgniter uses a +segment-based approach:

+
example.com/news/article/my_article
+
+
+
+

Note

+

Query string URLs can be optionally enabled, as described +below.

+
+
+

URI Segments

+

The segments in the URL, in following with the Model-View-Controller +approach, usually represent:

+
example.com/class/function/ID
+
+
+
    +
  1. The first segment represents the controller class that should be +invoked.
  2. +
  3. The second segment represents the class function, or method, that +should be called.
  4. +
  5. The third, and any additional segments, represent the ID and any +variables that will be passed to the controller.
  6. +
+

The URI Library and the URL Helper contain functions that make it easy to work +with your URI data. In addition, your URLs can be remapped using the +URI Routing feature for more flexibility.

+
+
+

Removing the index.php file

+

By default, the index.php file will be included in your URLs:

+
example.com/index.php/news/article/my_article
+
+
+

If your Apache server has mod_rewrite enabled, you can easily remove this +file by using a .htaccess file with some simple rules. Here is an example +of such a file, using the “negative” method in which everything is redirected +except the specified items:

+
RewriteEngine On
+RewriteCond %{REQUEST_FILENAME} !-f
+RewriteCond %{REQUEST_FILENAME} !-d
+RewriteRule ^(.*)$ index.php/$1 [L]
+
+
+

In the above example, any HTTP request other than those for existing +directories and existing files is treated as a request for your index.php file.

+
+

Note

+

These specific rules might not work for all server configurations.

+
+
+

Note

+

Make sure to also exclude from the above rule any assets that you +might need to be accessible from the outside world.

+
+
+
+

Adding a URL Suffix

+

In your config/config.php file you can specify a suffix that will be +added to all URLs generated by CodeIgniter. For example, if a URL is +this:

+
example.com/index.php/products/view/shoes
+
+
+

You can optionally add a suffix, like .html, making the page appear to +be of a certain type:

+
example.com/index.php/products/view/shoes.html
+
+
+
+
+

Enabling Query Strings

+

In some cases you might prefer to use query strings URLs:

+
index.php?c=products&m=view&id=345
+
+
+

CodeIgniter optionally supports this capability, which can be enabled in +your application/config.php file. If you open your config file you’ll +see these items:

+
$config['enable_query_strings'] = FALSE;
+$config['controller_trigger'] = 'c';
+$config['function_trigger'] = 'm';
+
+
+

If you change “enable_query_strings” to TRUE this feature will become +active. Your controllers and functions will then be accessible using the +“trigger” words you’ve set to invoke your controllers and methods:

+
index.php?c=controller&m=method
+
+
+
+

Note

+

If you are using query strings you will have to build your own +URLs, rather than utilizing the URL helpers (and other helpers +that generate URLs, like some of the form helpers) as these are +designed to work with segment based URLs.

+
+
+
+ + +