Удаление индекса.php из codeginiter url используя htaccess не работает на сервере
.код htaccess:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L]
Также изменение в файле конфигурации:
$config['index_page'] = ' ';
$config['uri_protocol'] = "REQUEST_URI";
Mod_rewrite также включен. хотя этот код не работает.
4 ответа:
Измените это
В ' config.php '
$config['base_url'] = ''; $config['index_page'] = '' $config['uri_protocol'] = 'AUTO';
.htaccess
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L] </IfModule>
И доступ к URL должен осуществляться с помощью функции
base_url()
.Ex
<form action="<?php echo base_url()?>Controller_name/Method_name"
Примечание: чтобы использовать
base_url()
, Вы должны включить его наautoload.php
$autoload['helper'] = array('url');
Нельзя использовать протокол
REQUEST_URI
, Когда вы просите Apache отправить URI вQUERY_STRING
.Так что либо измените ваш
.htaccess
или ваш конфиг, чтобы они соответствовали. Моя рекомендация-изменить.htaccess
:RewriteRule ^ index.php [L]
Вы пробовали давать
AUTO
вместоREQUEST_URI
? Даже у меня была похожая проблема, но она была решена, когда я изменил ее наAUTO
и небольшое изменение .htaccess в моем случае.$config['index_page'] = ''; $config['uri_protocol'] = 'AUTO';
.htaccess -
RewriteEngine on RewriteCond $1 !^(index\.php|public|\.txt) RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?$1
Или
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule .* index.php/$0 [PT,L]
Если это не работает для вашего случая, извините.
У меня есть запущенное приложение CI 3 и прекрасно с этим работающее .htaccess
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_URI} ^system.* RewriteRule ^(.*)$ /index.php?/$1 [L] RewriteCond %{REQUEST_URI} ^application.* RewriteRule ^(.*)$ /index.php?/$1 [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?/$1 [L] </IfModule>