Убрать index.php из URL
- Автор mityok on марта 16th, 2008
По умолчанию CodeIgniter работает с указанием index.php в URL страницы. Это обусловлено тем, что файл index.php реализует задачу инициализации приложения и подключения основных библиотек ядра CodeIgniter. Часто возникает необходимость убрать упоминание index.php из URL, что легко реализуемо при помощи директив Rewrite в файле .htaccess и небольшой донастройки в файле application/config/config.php.
Правила перенаправления в файле .htaccess
Включаем модуль mod_rewrite, задаем для него перенаправление всех запросов для несуществующих ресурсов на index.php:
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L] </IfModule>
Если ваше приложение на базе CodeIgniter расположено не в корневом каталоге домена, укажите в строке RewriteBase / тот каталог, где расположено ваше приложение. Строки
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d
Строка RewriteRule ^(.*)$ index.php/$1 [L] указывает, что все запросы нужно направить на файл index.php.
Теперь вместо URL /index.php/welcome можно смело использовать /welcome.
Примечание, если после внесения в файл .htaccess описанного кода сервер на любой запрос отвечает Internal Server Error (код ошибки 500), значит вы скорее всего допустили опечатку при редактировании файла.
Настройка в application/config/config.php
Для того, чтобы вспомогательные функции URL CodeIgniter и системные функции генерировали адреса без index.php нужно в файле application/config/config.php строку $config['index_page'] = "index.php"; заменить на $config['index_page'] = "";. Кроме того, в этом же файле нужно будет выбрать подходящее для конфигурации вашего сервера значение параметра 'uri_protocol'. Чаще всего это
$config['uri_protocol'] = "PATH_INFO";

Отправить комментарий