summaryrefslogtreecommitdiffstats
path: root/user_guide_src/source/general/urls.rst
diff options
context:
space:
mode:
authorKyle Farris <kylefarris@kylefarris.gotdns.org>2011-10-14 21:43:25 +0200
committerKyle Farris <kylefarris@kylefarris.gotdns.org>2011-10-14 21:43:25 +0200
commitad17f4b932b3728c1e299b48f28b3ae0dbdd6b0b (patch)
treefdb357433e76000bdef60c4d18e5ab0540b07aeb /user_guide_src/source/general/urls.rst
parentdb46d02ac23b8e0bc2416e197494d3b795b57530 (diff)
parenta2125a5d830fd390b4cf35f77e9bb0558cfa2dd7 (diff)
Merged with development
Diffstat (limited to 'user_guide_src/source/general/urls.rst')
-rw-r--r--user_guide_src/source/general/urls.rst93
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.