CodeIgniter User Guide Version 2.0.0


URLы CodeIgniter

По умолчанию, URL в CodeIgniter имеют SEO-дружественный и легко читаемый "ЧПУ" дизайн. Вместо того, чтобы использовать традиционный подход "строки запроса", CodeIgniter использует более лаконичный подход, основанный на сегментах:

example.com/news/article/my_article

Примечание: Строки запросов опционально включаются, как показано ниже.

Сегменты URL

Сегменты в URL, в соответствии с подходом MVC, обычно представляют следующее:

example.com/class/function/ID
  1. Первый сегмент указыват на класс контроллера, который должен быть вызван.
  2. Второй сегмент представляет функцию (метод) класса, который должен быть вызван.
  3. Третий и другие сегменты представляют ID и другие данные, которые должны быть переданы в контроллер.

Класс URI и помощник URL содержат функции, которые позволяют легко работать с данными URI. К тому же, ваши URL могут быть переназначены, используя URI роутинг для большей гибкости.

Удаление index.php

По умолчанию, файл index.php включен в ваши URL:

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

Вы можете легко удалить этот файл, используя файл .htaccess с несколькими простыми правилами. Вот пример:

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

В примере выше, любой запрос HTTP за исключением тех, которые направлены к index.php, изображениям (images) и robots.txt рассматривается как запрос к файлу index.php

Примечание переводчика: Нет проблем и при эксплуатации с nginx в качестве основного (единственного) веб-сервера. В этом случае регулярное выражение просто прописывается в конфигурацию хоста nginx.

Добавление суффикса URL

В вашем файле config/config.php вы можете указать суффикс, который будет добавлен ко всем URL, генерируемых CodeIgniter. Например, если URL вроде этого:

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

Вы можете опционально добавить суффикс, например .html, который сделает страницу определенного типа:

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

Включение строки запроса

В некоторых случаях вы, возможно, предпочтете использовать строки запроса URL:

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

CodeIgniter опционально разрешает эту возможность, которая может быть включена в вашем файле application/config.php. Если вы откроете ваш конфигурационный файл и найдете там элементы:

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

Если вы измените "enable_query_strings" в TRUE, эта функция станет активной. Ваши контроллеры и функции будут доступны через слова "trigger":

index.php?c=controller&m=method

Пожалуйста, обратите внимание: Если вы используете строки запроса, стройте приложение с собственными URL, так как помощники URL, form и другие работают только с сегментными URL.

Примечание переводчика. Единственный раз столкнулся с необходимостью использовать традиционные строки запроса — при работе с jQueryUI Autocomplete. Когда понял, что я могу потерять, просто немного доработал javascript. Оказалось, достаточно удалить буквально два символа из кода jQuery. Больше случаев отказываться от сегментных URL CodeIgniter не представлялось, в связи с чем настоятельно рекомендую работать именно с ними, а не со строкой запроса.