CodeIgniter URL
По умолчанию URL в CodeIgniter предназначены для удобства поисковых систем и пользователей. Вместо стандартного подхода к URL с использованием «строки запроса», характерного для динамических систем, CodeIgniter использует подход на основе сегментов:
example.com/news/article/my_article
Сегменты URI
Сегменты в URL, в соответствии с подходом MVC, обычно представляют:
example.com/class/method/ID
- Первый сегмент представляет собой класс контроллера, который должен быть вызван.
- Второй сегмент представляет собой метод класса, который должен быть вызван.
- Третий и последующие сегменты представляют идентификатор и любые переменные, которые будут переданы контроллеру.
Библиотека URI и помощник URL содержат функции, которые упрощают работу с данными URI. Кроме того, ваши URL можно перенастроить, используя функцию маршрутизации URI для большей гибкости.
Удаление файла index.php
По умолчанию файл index.php будет включён в ваши URL:
example.com/index.php/news/article/my_article
Если ваш сервер поддерживает перенаправление URL, вы можете легко удалить этот файл с помощью перенаправления URL. Это обрабатывается по-разному на разных серверах, но мы покажем примеры для двух наиболее распространённых веб-серверов.
Веб-сервер Apache
Для Apache необходимо включить расширение mod_rewrite. Если оно включено, вы можете использовать файл .htaccess с простыми правилами. Вот пример такого файла, использующего метод «отрицания», в котором всё перенаправляется, кроме указанных элементов:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
В этом примере любой HTTP-запрос, кроме запросов к существующим каталогам и файлам, обрабатывается как запрос к вашему файлу index.php.
Примечание
Эти конкретные правила могут не работать для всех конфигураций сервера.
Примечание
Убедитесь, что из вышеуказанных правил исключены любые ресурсы, которые должны быть доступны извне.
NGINX
В NGINX вы можете определить блок location и использовать директиву try_files для достижения того же эффекта, что и в конфигурации Apache:
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
Сначала будет произведён поиск файла или каталога, соответствующего URI (путь к каждому файлу будет построен на основе настроек директивы root и alias), а затем запрос будет перенаправлен на файл index.php вместе со всеми аргументами.
© 2014–2020 British Columbia Institute of Technology
Licensed under the MIT License.
https://codeigniter.com/user_guide/general/urls.html