URLы CodeIgniter
По умолчанию, URL в CodeIgniter имеют SEO-дружественный и легко читаемый "ЧПУ" дизайн. Вместо того, чтобы использовать традиционный подход "строки запроса", CodeIgniter использует более лаконичный подход, основанный на сегментах:
example.com/news/article/my_article
Примечание: Строки запросов опционально включаются, как показано ниже.
Сегменты URL
Сегменты в URL, в соответствии с подходом MVC, обычно представляют следующее:
example.com/class/function/ID
- Первый сегмент указыват на класс контроллера, который должен быть вызван.
- Второй сегмент представляет функцию (метод) класса, который должен быть вызван.
- Третий и другие сегменты представляют 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 не представлялось, в связи с чем настоятельно рекомендую работать именно с ними, а не со строкой запроса.