CodeIgniter удаляет index.php из URL

160

Мои текущие URL выглядят так [mysite]index.php/[rest of the slug].
Я хочу снять index.phpс этих URL.

mod_rewriteвключен на моем сервере apache2. В config,$config['index_page'] = '';

Мой корневой .htaccessфайл codeignitor содержит,

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]

Но все равно это не работает. Куда я иду не так?

Нихар Саранджи
источник
2
Возможный дубликат Как удалить "index.php" в пути
codeigniter
Почему у этого вопроса так много повторяющихся ответов
Тилак Мэдди,

Ответы:

239

Попробуйте следующее

Откройте config.php и выполните следующие замены

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

в

$config['index_page'] = ""

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

$config['uri_protocol'] ="AUTO"

по

$config['uri_protocol'] = "REQUEST_URI"

.htaccess

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

Примечание. Код .htaccess зависит от хост-сервера. На каком хостинг-сервере (например: Godaddy) нужно использовать дополнительный? в последней строке кода выше. Следующая строка будет заменена последней строкой в ​​соответствующем случае:

// Replace last .htaccess line with this line
RewriteRule ^(.*)$ index.php?/$1 [L,QSA] 
Рахул Тейвал
источник
4
Я попробовал этот код, RewriteRule ^(.*)$ index.php/$1 [L]но все же я могу просматривать страницу в обоих направлениях: domain.com/about-us, domain.com/index.php/about-us и domain.com/index.php?/about-us, который генерирует Ошибка SEO, т.е. дублированный тег заголовка и дублированное мета-описание
Musaddiq Khan
Спасибо за ответ, у меня возникла та же проблема, и добавление первого RewriteCond заставило его работать. Можете ли вы объяснить, почему в руководстве (здесь: codeigniter.com/userguide3/general/… ) это не упоминается?
Клаудио
Спасибо за ваш ответ, у меня
такая
$_POSTили isset($_POST)не работает после добавления этого.
DCK
1
и не забудьте изменить конфигурацию apache, как указано в stackoverflow.com/a/14807463/1537413
Dika
135

Шаг: -1 Откройте папку «application / config» и откройте файл «config.php«. найдите и замените приведенный ниже код в файле config.php.

//find the below code   
$config['index_page'] = "index.php" 
//replace with the below code
$config['index_page'] = ""

Шаг: -2 Перейдите в папку CodeIgniter и создайте .htaccess

Path:
Your_website_folder/
application/
assets/
system/
.htaccess <——— this file
index.php

Шаг: -3 Запишите ниже код в файле .htaccess

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

Шаг: -4 В некоторых случаях настройка по умолчанию для uri_protocol не работает должным образом. Чтобы решить эту проблему, просто откройте файл «application / config / config.php», затем найдите и замените приведенный ниже код

//Not needed for CodeIgniter 3 its already there.
//find the below code
$config['uri_protocol'] = "AUTO"
//replace with the below code
$config['uri_protocol'] = "REQUEST_URI" 

Это все, кроме сервера Wamp, он не работает, потому что rewrite_module по умолчанию отключен, поэтому нам нужно включить его. для этого сделайте следующее

  1. Щелкните левой кнопкой мыши значок WAMP
  2. апаш
  3. Модули Apache
  4. Щелкните левой кнопкой мыши rewrite_module

Оригинальная документация

Пример ссылки

MaxEcho
источник
6
я должен был положить .htaccess в корневую папку вместо папки «application», чтобы сделать эту работу
Mawardy
У меня нет папки CodeIgniter. О чем ты говоришь?
Nicolas S.Xu
1
он удаляет index.php, но мне нужно удалить и дополнительную обратную косую черту '/'
Pradeep Kumar Prabaharan
после изменения в config.php и создания файла .htaccess. Я получаю ошибку Parse error: синтаксическая ошибка, неожиданный «$ config» (T_VARIABLE) в файле application \ config \ config.php в строке 55
Fawwad
Спасибо за ответ. Мне нужно было обновить мой файл htaccess, как показано, а затем убедиться, что это папка системной папки, а не внутри нее.
Кики Родригес
44

Шаг 1 :

Добавьте это в файл htaccess

<IfModule mod_rewrite.c>
  RewriteEngine On
  #RewriteBase /

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^ index.php [QSA,L]
</IfModule>

Шаг 2 :

Удалите index.php в конфиге codeigniter

$config['base_url'] = ''; 
$config['index_page'] = '';

Шаг 3 :

Разрешить переопределение htaccess в конфигурации Apache (команда)

sudo nano /etc/apache2/apache2.conf

и отредактируйте файл и измените на

AllowOverride All

для папки www

Шаг 4:

Включено переписывание модов Apache (команда)

sudo a2enmod rewrite

Шаг 5:

Перезапустите Apache (Команда)

sudo /etc/init.d/apache2 restart
Dino
источник
3
«AllowOverride All» в apache2.conf решил проблему за меня, так как .htaccess по умолчанию не используется.
Лоран Жегу
1
Я хотел бы дать вам бонус за это! Спас мой день. Потратил 2 часа после этого: |
Киран П.
1
Похоже, что для последних дистрибутивов Linux первое, что нужно сделать, это отредактировать правило AllowOveride
Nasz Njoka Sr.
Наконец-то получил его на работу. Спасибо. Правило AllowOveride поможет мне с этой проблемой. Я использую Ubuntu 16.04
Apit John Ismail
Отличное решение, спасибо :)
Разиб Аль Мамун
16
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]

использование

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$1 [PT,L]

если у вас есть URL в этом порядке site.com/index.php/class/method/id

NB: удалить index.php в config.php должен быть config [index_page] = ""

NB: обратите внимание на разницу в последней строке вместо $ 0 используйте $ 1

user3464848
источник
это работает для меня. Ответы выше нет. Я не проверял ответы ниже.
Джем Вилле
Это сработало для меня, но я должен был изменить протокол URI с «AUTO; в 'REQUEST_URI' следующим образом: $ config ['uri_protocol'] = 'REQUEST_URI';
Изабель Марц
RewriteRule .* index.php/$1 [PT,L]- это не передаст URL-путь, если вы не измените RewriteRule шаблон с .*на (.*). Однако, если вы используете, $config['uri_protocol'] = 'REQUEST_URI';то это все равно не имеет значения.
MrWhite
16

Шаг 1 => Поместите файл .htaccess в корневую папку, где существуют папки приложения и системы.

Шаг 2 => Если ваш веб-путь использует подпапку, например - yourdomain.com/project/, - используйте следующий код в файле htaccess

RewriteEngine on
RewriteBase    /project/
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /project/index.php/$1 [L]

Если ваш веб-путь использует корневую папку, например - yourdomain.com, - используйте следующий код в файле htaccess.

RewriteEngine on
RewriteBase    /
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
Винод
источник
Это, безусловно, лучший и полный ответ. вещь подпапки делает то, что делает это лучше чем другие ответы.
Бхавик Шах
Это ДОЛЖНО быть ответом. Голосовавший ответ с частью о: RewriteCond% {REQUEST_FILENAME}! -F RewriteCond% {REQUEST_FILENAME}! -D Это не сработало для меня.
GunWanderer
11

на вашем htaccess используйте это,

RewriteEngine On
RewriteBase /root_folder_name/
RewriteCond %{REQUEST_URI} ^system.*
RewriteCond $1 !^(index\.php|images|js|uploads|css|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

Надеюсь это поможет.

Юварадж Батрабагу
источник
root_folder_name -> вы изменили это имя вашей корневой папки ??
Ювараджа Батрабагу
Да, я сделал это. Я положил туда мой корень codeigniter. Это правильно?
Нихар Саранджи
Приятель, я использую этот код .htaccess в двух моих проектах CI !! и оба работают нормально !!
Ювараджа Батрабагу
11

Есть два шага:

1) Редактировать config.php

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

к

$config['index_page'] = '’;

2) Создание / редактирование файла .htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
Шафи
источник
6
  1. сделать .htaccessфайл и поставить этот код

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

    $config['index_page'] = ''; 

удалить index.phpподарок в config.phpфайле

  1. переписать с вашего сервера.
Сиддхарт Шукла
источник
6

1. Создайте новый файл .htaccess в корневом каталоге.

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

2. Перейдите в файл config.php и измените с $config['index_page'] = 'index.php' на$config['index_page'] = ''

Маниш Шарма
источник
6

Решил это за 2 шага.

  1. Обновите 2 параметра в файле конфигурации application / config / config.php
$config['index_page'] = '';
$config['uri_protocol'] = 'REQUEST_URI';
  1. Обновите файл .htaccess в корневой папке
<IfModule mod_rewrite.c>
    RewriteEngine On
      RewriteBase /
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>
Хачорнчит Songsaen
источник
5

Попробуйте это. Это может помочь вам, так как это работает на меня.

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]

поместите код в корневой файл htaccess. и убедитесь, что у вас есть

$config['index_page'] = '';

в вашем конфигурационном файле.

Пожалуйста, дайте мне знать, если у вас возникнут проблемы.

ABorty
источник
Это именно то, что я делал.
Нихар Саранджи
4
+ Copy .htaccess from Application to Root folder
+ edit .htaccess and put

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /ci_test/

    #Removes access to the system folder by users.
    #Additionally this will allow you to create a System.php controller,
    #previously this would not have been possible.
    #'system' can be replaced if you have renamed your system folder.
    RewriteCond %{REQUEST_URI} ^system.*
    RewriteRule ^(.*)$ /index.php?/$1 [L]

    #When your application folder isn't in the system folder
    #This snippet prevents user access to the application folder
    #Submitted by: Fabdrol
    #Rename 'application' to your applications folder name.
    RewriteCond %{REQUEST_URI} ^application.*
    RewriteRule ^(.*)$ /index.php?/$1 [L]

    #Checks to see if the user is attempting to access a valid file,
    #such as an image or css document, if this isn't true it sends the
    #request to index.php
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>

<IfModule !mod_rewrite.c>
    # If we don't have mod_rewrite installed, all 404's
    # can be sent to index.php, and everything works as normal.
    # Submitted by: ElliotHaughin

    ErrorDocument 404 /index.php
</IfModule>

Note: make sure your web server is enable for  "rewrite_module"

+ Remove index.php from $config['index_page'] = 'index.php';
- edit config.php in application/config
- search for index.php
change it from  $config['index_page'] = 'index.php'; to  $config['index_page'] = '';

Пожалуйста, посмотрите это видео для ознакомления https://www.youtube.com/watch?v=HFG2nMDn35Q

KH SolveCode
источник
4

Ну, все эти ответы хороши, но для новичка (что делать в первый раз) они сбивают с толку. Есть другие файлы htaccess, которые находятся в контроллере, но мы должны отредактировать или добавить htaccess в основную папку проекта.

Это ваша папка codeigniter, в которой находится файл, такой как приложение, система, ресурсы, файлы для загрузки и т. Д.

Your_project_folder/
application/
assets/
cgi-bin/
system/
.htaccess---->(Edit this file if not exist than create it)
index.php

Измените этот файл, как написано ниже:

<IfModule mod_rewrite.c>
  RewriteEngine On
  # !IMPORTANT! Set your RewriteBase here and don't forget trailing and leading
  #  slashes.
  # If your page resides at http://www.example.com/mypage/test1
  # then use RewriteBase /mypage/test1/
  # Otherwise /
  RewriteBase /
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>

<IfModule !mod_rewrite.c>
  # If we don't have mod_rewrite installed, all 404's
  # can be sent to index.php, and everything works as normal.
  # Submitted by: Anand Pandey
  ErrorDocument 404 /index.php
</IfModule>

и да, конечно, вам нужно изменить две строки кода в application / config / config.php

//find the below code   
$config['index_page'] = "index.php";
$config['uri_protocol'] ="AUTO" 
//replace with the below code
$config['index_page'] = "";
$config['uri_protocol'] = "REQUEST_URI";
Ананд Пандей
источник
Почему-то все эти ответы не работают для меня. Я могу получить доступ к страницам, когда добавляю /index.php/ в URL.
Билал Ахмад
3

Как разработка, так и производство

    # Development
    RewriteEngine On
    RewriteBase /your_local_folder/
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond $1 !^(index\.php|images|scripts|styles|vendor|robots\.txt)
    RewriteRule ^(.*)$ index.php/$1 [L]

    #Production PHP5 CGI mode
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond $1 !^(index\.php|images|scripts|styles|vendor|robots\.txt)
    RewriteRule ^(.*)$ index.php?/$1 [L]
cgwCode
источник
3

Прежде всего, вам нужно переписать движок на сервере Apache. Эта ссылка поможет вам в этом.

http://www.anmsaiful.net/blog/php/enable-apache-rewrite-module.html

RewriteEngine On
RewriteBase /your_folder_name/

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php?/$1 [L]

это будет ваш файл .htaccess. Теперь попробуйте. Эта настройка работает для меня.

вайбхав кулкарни
источник
2

Вы можете перейти в файл config \ config.php и удалить значение index.php из этой переменной

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

создайте файл .htaccess и вставьте в него этот код.

<IfModule mod_rewrite.c>

 Options +FollowSymLinks

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

</IfModule>

хороший шанс

Аббас Хусен
источник
2
  Removing index.php from url of codeigniter   

Three steps are require to remove index.php from url in Codeigniter.

1)Create .htacess file in parallel to application holder and just copy past the following code:

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

2) Change $config['index_page'] to blank in config.php in application folder as below:

$config['index_page'] = '';

3) Enable rewrite_module of apache.
Притам Чаудхари
источник
1

Для удаления index.php из URL в Codeigniter требуется всего три шага

1) Создайте файл .htacess параллельно владельцу приложения и просто скопируйте следующий код:

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

2) Измените $ config ['index_page'] на пустую в config.php в папке приложения, как показано ниже:

$config['index_page'] = '';

3) Включить «rewrite_module» в apache.

Перезагрузите ваш Apache и все готово.

Подробности: http://sforsuresh.in/removing-index-php-from-url-of-codeigniter-in-wamp/

Суреш Камруши
источник
1

Я думаю, что все ваши настройки хороши, но вы делаете, чтобы неправильно разместить свой файл htaccess, и добавьте свой htaccess в свой файл проекта.

project_folder-> Htaccess

и добавьте этот код в свой 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

Вы можете перейти в файл application \ config \ config.php и удалить index.php

 $ config ['index_page'] = 'index.php'; // удаляем index.php

Изменить на

 $ config ['index_page'] = '';

Рафик Ислам
источник
1

попробуйте этот RewriteEngine On

        # Removes index.php from ExpressionEngine URLs
        RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule ^(.*)$ /index.php/$1 [L]
</IfModule>
Kashif
источник
1

Это работает для меня. Протестировано в codeigniter 3.1.11, PHP 5.6.40 Я использую виртуальный хост в моей конфигурации apache2 на тестовом сервере.

<VirtualHost *:80>
     ServerAdmin webmaster@dummy-host2.example.com
     DocumentRoot (__DIR__)
     ServerName mydomain
     ##ErrorLog "logs/dummy-host2.example.com-error.log"
     ##CustomLog "logs/dummy-host2.example.com-access.log" common
     <Directory "(__DIR__)">
        Require all granted
        AllowOverride All
   </Directory>
</VirtualHost>

И / .htaccess содержание

    <IfModule mod_rewrite.c>
       RewriteEngine On
       RewriteCond %{REQUEST_FILENAME} !-f
       RewriteCond %{REQUEST_FILENAME} !-d
       RewriteRule ^(.*)$ index.php/$1 [L] 
    </IfModule>
Хосе Инсфран
источник
0

Следуйте этим шагам, ваша проблема будет решена

1- Загрузите файл .htaccess здесь https://www.dropbox.com/s/tupcu1ctkb8pmmd/.htaccess?dl=0.

2- Измените имя каталога CodeIgnitor в строке № 5. как мой каталог имя ABC (добавить свое имя)

3. Сохраните файл .htaccess в главном каталоге (abc) вашей папки codeignitor.

4- Измените uri_protocol с AUTO на PATH_INFO в файле Config.php

Примечание: в первую очередь вы должны включить mod_rewrite из httpd.conf из apachi, удалив комментарии

Салман Хан
источник
0

Используйте этот код. Измените вторую строку, как у вас есть имя папки. Где файл index.php и папки приложения, лежат системные папки. В основном проблемы возникают из-за второй линии. мы не настраиваем имя папки, в которой находится проект. Важна вторая строка. Это просто удалить index.php. RewriteEngine для RewriteBase / project_folder_name RewriteCond% {REQUEST_FILENAME}! -F RewriteCond% {REQUEST_FILENAME}! -D RewriteRule. * Index.php / $ 0 [PT, L]

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

Перейдите в файл controller / config.php.

конфигурации [ 'index_url'] = '';

Ссылка для дальнейшего изучения.

https://ellislab.com/expressionengine/user-guide/urls/remove_index.php.html

https://ellislab.com/blog/entry/fully-removing-index.php-from-urls

Хафиз Шехбаз Али
источник
0

Помимо этих ответов, можно просто добавить index.php или отредактировать его (если он уже есть) - в целях безопасности вы все равно хотите отключить index.php из списка файлов в каталоге вашего сайта - затем измените содержимое на

<?php
   header('location:your_required_starting.php'); 
?>
bennyhardjono
источник
0

Незначительная вещь: (необязательно)

Попробуйте перезапустить Apache после обновления статуса движка перезаписи в vhosts as Rewrite ON.

Одна важная вещь, на которую стоит обратить внимание:

В файле Apache vhosts проверьте, есть ли у вас эта строка скрипта. AllowOverride None Если да, удалите / прокомментируйте эту строку.

Скрипт моего файла vhosts: (до)

<VirtualHost *:80>
    DocumentRoot "/path/to/workspace"
    ServerName ciproject
    ErrorLog "/path/to/workspace/error.log"
    CustomLog "/path/to/workspace/access.log" common
    Directory   "/path/to/workspace">
        Options Indexes FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory> 
</VirtualHost>

Скрипт моего файла vhosts: (после)

<VirtualHost *:80>
    DocumentRoot "/path/to/workspace"
    ServerName ciproject
    ErrorLog "/path/to/workspace/error.log"
    CustomLog "/path/to/workspace/access.log" common
    Directory   "/path/to/workspace">
        Options Indexes FollowSymLinks
        #AllowOverride None
        Order allow,deny
        Allow from all
    </Directory> 
</VirtualHost>

Я столкнулся с той же проблемой, боролся около 1 дня, все было хорошо. Позже методом проб и ошибок нашел эту вещь. После удаления этого моя работа была выполнена. URL теперь не ищет index.php :)

Лалит Кумар
источник
0

Если все вышеперечисленное решение не работает, то в папке вашего проекта их будут два файла index.html и index.php, переименуйте index.html в index_1.html и просмотрите ваш проект.

Мохсин Шоукат
источник
0

Обратите внимание на разницу с добавленным "?" символ после ".php", особенно при работе с CodeIgniter:

RewriteRule ^ (. *) $ Index.php / $ 1 [L]

против

RewriteRule ^ (. *) $ Index.php? / $ 1 [L]

Это зависит от нескольких других вещей .. если не работает, попробуйте другой вариант!

eyal_katz
источник
0

Вы можете удалить index.php из URL, поместив некоторый код в .htaccess

Путь к файлу: root> .htacess

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d


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

Надеюсь, это сработает.

Рокан Нашп
источник
0

В CodeIgniter 3.16 используется htaccess для

удалить файл index.php

& также

перенаправить HTTP на HTTPS

Следуйте кодам:

  • перейти к application\config\config.phpфайлу

Вносить изменения

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

к

$config['index_page'] = '';
  • Теперь откройте файл .htaccess и обновите коды ниже
RewriteEngine on
RewriteBase /

## Redirect SSL
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R,L]

## Remove fron url index.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond $1 !^/(index\.php|assets/|humans\.txt)
RewriteRule ^(.*)$ index.php/$1 [L] 
Чандан Шарма
источник