Удаление index.php из URL-адресов CodeIgniter в Apache: подробное руководство

CodeIgniter — это популярный PHP-фреймворк, известный своей простотой и удобством использования. По умолчанию URL-адреса CodeIgniter содержат сегмент «index.php», что может быть нежелательно с точки зрения эстетики и SEO. В этой статье мы рассмотрим различные методы удаления сегмента «index.php» из URL-адресов CodeIgniter при использовании веб-сервера Apache. Мы предоставим примеры кода для иллюстрации каждого метода.

Метод 1: использование файла.htaccess
Наиболее распространенный и рекомендуемый способ удалить «index.php» из URL-адресов CodeIgniter — использовать файл.htaccess. Создайте или измените существующий файл.htaccess в каталоге проекта CodeIgniter и добавьте следующий код:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

Метод 2: изменение файла config.php
Другой подход — изменить файл конфигурации CodeIgniter. Откройте файл config.php, расположенный в каталоге application/config, и измените следующую строку:

$config['index_page'] = 'index.php';

до

$config['index_page'] = '';

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

$config['enable_query_strings'] = true;

Затем измените файл .htaccess, используя следующий код:

RewriteEngine On
RewriteCond %{QUERY_STRING} ^(.*)
RewriteRule ^(.*)$ index.php?/$1 [L]

Метод 4: Конфигурация виртуального хоста
Если у вас есть доступ к конфигурации сервера Apache, вы можете создать виртуальный хост для вашего проекта CodeIgniter. В блоке VirtualHost установите DocumentRootв каталог проекта CodeIgniter и добавьте блок Directoryсо следующей конфигурацией:

<Directory "/path/to/your/project">
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>