summaryrefslogtreecommitdiffstats
path: root/user_guide_src/source/general/urls.rst
blob: db1ffe565d2bb2ba95bd2e2db5c3dfdaf2e505b7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
################
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


#. The first segment represents the controller **class** that should be
   invoked.
#. The second segment represents the class **function**, or method, that
   should be called.
#. The third, and any additional segments, represent the ID and any
   variables that will be passed to the controller.

The :doc::doc:`URI Class <../libraries/uri>` and the `URL
Helper <../helpers/url_helper>` contain functions that make it
easy to work with your URI data. In addition, your URLs can be remapped
using the :doc:`URI Routing <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

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 $1 !^(index\.php|images|robots\.txt)
	RewriteRule ^(.*)$ /index.php/$1 [L]

In the above example, any HTTP request other than those for index.php,
images, and robots.txt is treated as a request for your index.php file.

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.