CodeIgniter удалить index.php из href

В приложении CodeIgniter

эта ссылка работает

<a href="index.php/controller">link</a>

пока этот не

<a href="controller">link</a>

Что не так с конфигурацией? Что нужно изменить, чтобы ссылки работали без "index.php/" в начале?

Это сделано без успеха:

1) добавлено в application / rout.php

$route['(:any)'] = 'controller';

2) добавлено в приложение /.htaccess

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

<Files "index.php">
AcceptPathInfo On
</Files>

3) не комментируется в etc/apache2/httpd.conf

LoadModule rewrite_module libexec/apache2/mod_rewrite.so
LoadModule php5_module libexec/apache2/libphp5.so

2 ответа

Решение

Прежде всего, вы должны очистить

$config['index_page'] = '';

в config config.php Затем напишите следующий код в.htaccess, расположенном в главном каталоге вашего проекта.

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

Используйте это в своем.htaccess для удаления index.php из URL

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

Ваша ссылка должна быть

<a href="/controller">link</a>

Config.php должен быть

$config['index_page'] = '';

Rewrite_module должен быть активирован в apache

Другие вопросы по тегам