Как удалить "index.php" в пути codeigniter - PullRequest
114 голосов
/ 18 сентября 2009

Как мне удалить "index.php" торчащий в каждом пути в codeigniter где-нибудь в центре? Я хочу чистить не index.php-fied URLs?

Ответы [ 26 ]

4 голосов
/ 10 июня 2014

Идеальное решение [протестировано как на локальном, так и на реальном домене]

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L] 
3 голосов
/ 11 октября 2013

В качестве файла .htaccess хорошим вариантом является использование файла, предоставленного Kohana Framework :

# Turn on URL rewriting
RewriteEngine On

# Installation directory
RewriteBase /

# Protect hidden files from being viewed
<Files .*>
    Order Deny,Allow
    Deny From All
</Files>

# Protect application and system files from being viewed
RewriteRule ^(?:application|system)\b.* index.php/$0 [L]

# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT]

Это хорошо продуманный .htaccess, который просто работает.

3 голосов
/ 18 сентября 2009

Это .htaccess для одного из моих проектов CI:

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

Последняя строка должна дать вам то, что вам нужно, хотя вам может понадобиться или не понадобиться '/ projectFolder' в зависимости от того, как настроена структура вашей папки. Удачи!

3 голосов
/ 06 ноября 2016

Существует два способа решения index.php в пути URL для codeigniter

1: в config / config.php Изменить код:

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

до

$config['index_page'] = '';

2: создайте .htacess в корневом пути, если он не создан, скопируйте следующий код: -

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

Сохраните его, а затем проверьте в своей конфигурации Apache rewrite_module ИЛИ mod_rewrite включен. (Лучший подход)!

3 голосов
/ 18 сентября 2009

Используйте mod_rewrite, как указано в этого руководства из вики CI.

2 голосов
/ 26 марта 2013

Я протестировал это на apache2 на многих разных хостингах, и он прекрасно работает.

используйте этот htaccess

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

убедитесь, что у вас есть enabled mod_rewirte с phpinfo();

затем сделайте это в config / config.php:

$config['index_url']    = '';
|
| 'AUTO'            Default - auto detects
| 'PATH_INFO'       Uses the PATH_INFO
| 'QUERY_STRING'    Uses the QUERY_STRING
| 'REQUEST_URI'     Uses the REQUEST_URI
| 'ORIG_PATH_INFO'  Uses the ORIG_PATH_INFO
|
*/
$config['uri_protocol'] = 'AUTO';

Если это еще не работает, попробуйте заменить $config['uri_protocol']='AUTO' на один из перечисленных внутри application/config/config.php файла в строке 40/54:

иногда я использовал: REQUEST_URI вместо AUTO или "QUERY_STRING" для хостинга goDaddy

2 голосов
/ 24 июля 2013

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

Это должно выглядеть так

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

изменить на

$config['index_page'] = "";

Тогда, как уже упоминалось, вам также необходимо добавить правило перезаписи в файл .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 голосов
/ 17 февраля 2015

Если вы используете Linux и используете сервер apache2, то нам может потребоваться переопределить файл apache2.conf, а также изменения в файле .htaccess. Найдите файл конфигурации apache2 в / etc / apache2 / apache2.conf .

Поиск в каталоге / var / www / Change AllowOverride Нет -> AllowOverride All

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory
1 голос
/ 03 сентября 2012

поместите файл .htaccess в ваш корневой веб-каталог

Что бы вы ни настраивали - если вышеупомянутое не выполняется - оно не будет работать. Обычно его в системной папке, он должен быть в корне. Ура! * * 1005

1 голос
/ 14 сентября 2015

Я использую эти строки в файле .htaccess; который я помещаю в корневую папку

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

Тогда я могу получить доступ http://example.com/controller/function/parameter

вместо http://example.com/index.php/controller/function/parameter

...