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