.htaccess — Как удалить index.php из URL

Я знаю, что об этом уже спрашивали, но я все перепробовал, и все равно ничего не получится. Может быть, это связано с новой версией CodeIgniter 3?

Моя файловая структура выглядит так:

blue(public_html)
--index.php
--.htaccess

code_igniter
--application
--system

.htaccess файл:

RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]

Любая помощь будет оценена.

-1

Решение

Предполагая, что вы используете Apache в качестве веб-сервера с включенным ModRewrite, есть несколько вещей, которые вы должны правильно настроить в CodeIgniter:
1. правильно написано .htaccess
2. Действительный application/config/config.php файл
3. Действительный index.php файл.

Давай пройдемся по одному.

.htaccess конфигурация

В вашем примере вы пропускаете RewriteBase декларация. Вам нужно добавить это объявление с абсолютным путем к общедоступному каталогу. Это .htaccess файл в базе публичного каталога.

RewriteEngine on
RewriteBase /absolute/path/to/blue(public_html)/
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]

config.php конфигурация

В application/config/config.php Вы должны убедиться, что вы установили свой base_url а также index_page варианты правильно. Удалять index.php из URL, вы должны установить index_page вариант пустым.

/*
|---------------------------------------------------------------
| Base Site URL
|---------------------------------------------------------------
*/
$config['base_url'] = 'localhost/blue';

/*
|---------------------------------------------------------------
| Index File
|---------------------------------------------------------------
*/

$config['index_page'] = ''; // <-- note that this is empty!

index.php конфигурация

Ваш index.php Конфигурационный файл находится в корне общедоступного каталога. Здесь вам нужно установить абсолютные пути к вашему приложению и системным папкам.

/*
*---------------------------------------------------------------
* SYSTEM FOLDER NAME
*---------------------------------------------------------------
...
*/
$system_path = '/absolute/path/to/code_igniter/system';

/*
*---------------------------------------------------------------
* APPLICATION FOLDER NAME
*---------------------------------------------------------------
...
*/
$application_folder = '/absolute/path/to/code_igniter/application';

Как только вы исправите эти три вещи в CI, вы сможете локальный / синий без index.php в URL.

1

Другие решения

Других решений пока нет …