diff options
author | Joël Cox <joel@joelcox.nl> | 2011-10-09 18:45:09 +0200 |
---|---|---|
committer | Joël Cox <joel@joelcox.nl> | 2011-10-09 18:45:09 +0200 |
commit | 8ffcb2c8c7ef3da54d7e46c29d502533e413c820 (patch) | |
tree | 1f94e2e81b4d20f2df827b8a84eeda27032161a1 /user_guide_src/source/general/urls.rst | |
parent | f4fb1db458fab52d0493ead52c9ea7e01206eaa7 (diff) | |
parent | 6858c0753a7221796d6a5a1d7fea93cc2f9feb2e (diff) |
Merged develop branch in tutorial.
Diffstat (limited to 'user_guide_src/source/general/urls.rst')
-rw-r--r-- | user_guide_src/source/general/urls.rst | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/user_guide_src/source/general/urls.rst b/user_guide_src/source/general/urls.rst new file mode 100644 index 000000000..211537675 --- /dev/null +++ b/user_guide_src/source/general/urls.rst @@ -0,0 +1,93 @@ +################ +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:`URI Class <../libraries/uri>` and the :doc:`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. |