Codeigniter – как удалить index.php из url?

У меня есть следующая структура моего проекта

/system /applications /cache /core /helpers /hook /language /libraries /logs /third_party /admin-panel /config /controllers welcome.php dashboard.php /errors /models /views welcome.php dashboard.php /user-panel /config /controllers welcome.php dashboard.php /errors /models /views welcome.php dashboard.php /admin index.php index.php 

У моего index.php внутри моей папки проекта есть панель пользователя, так как моя папка приложения и index.php в папке администратора имеют панель администратора в качестве папки моего приложения.

Я вставил эту строку $ route ['default_controller'] = "welcome"; $ route ['welcome'] = 'welcome'; в routes.php внутри панели пользователя и панели администратора

Я могу получить доступ к контроллеру приветствия моей панели пользователя и администратора с помощью http://localhost/myproject and http://localhost/myproject/admin

но я не могу получить доступ к контроллеру панели управления с помощью http://localhost/myproject/dashboard or http://localhost/myproject/admin/dashboard

мой контроллер панели управления доступен с помощью http://localhost/myproject/index.php/dashboard or http://localhost/myproject/admin/index.php/dashboard

Но я не хочу, чтобы index.php был включен в мой url. Я хочу удалить его. Я также пробовал использовать .htaccess внутри папки admin. Я пишу следующую строку в этом

 RewriteEngine On RewriteCond $1 !^(index\.php|(.*)\.swf|robots\.txt) RewriteRule ^(.*)$ index.php/$1 [L] 

но это не сработало для меня. Он дает 404 не найденную ошибку CI. Я также включил mod_rewrite, изменив AllowOerride None на AllowOverride All в httpd.conf. Скажите, пожалуйста, что мне делать, чтобы удалить index.php и где я должен поместить файлы .htaccess в свою директорию проектов.

если ваша корневая папка для проекта не является корневым доменом, т. е. ваш сайт является подкаталогом домена http://localhost/myproject тогда вам понадобится дополнительная строка в вашем файле .htaccess, который является RewriteBase

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

Также убедитесь, что ваш config.php настроен как

 $config['base_url'] = 'http://localhost/myproject/'; $config['index_page'] = ''; 

И mod_rewrite включен в конфигурационном файле apache.

Откройте config.php из каталога system / application / config

и заменить

$ config ['index_page'] = "index.php" по $ config ['index_page'] = ""

Создайте файл «.htaccess» в корне каталога CodeIgniter

и добавьте следующие строки.

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

В некоторых случаях настройка по умолчанию для uri_protocol работает неправильно.

Чтобы решить эту проблему, просто замените

 `$config['uri_protocol'] = “AUTO”` 

от

  $config['uri_protocol'] = “REQUEST_URI” 

из системы / application / config / config.php

Убедитесь в следующем:

  1. .htaccess необходимо поместить в тот же каталог, что и файл index.php, обычно root из приложения.
  2. прочитайте руководство по codeigniter и .htaccess
  3. Убедитесь, что apache запускает модуль перезаписи с именем: rewrite_module, который вы можете узнать больше о включении модуля в Linux: запись в блоге или здесь: Wamp icon -> Apache -> Apache Modules -> rewrite_module

Посмотрите в файле config.php, есть переменная с именем 'index_page'

попробуйте изменить

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

в

 $config['index_page'] = "";