Codeigniter:如何从URL中删除index.php?

时间:2015-08-02 10:10:01

标签: php codeigniter url-rewriting codeigniter-3

我看了很多文章并尝试了不同的方法,但它仍然无效。

现在我的网址看起来像mysite.com/index.php/[controller]。 目标是mysite.com/[controller]

config.php

$config['index_page'] = ""; 
$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]

在我的Apache服务器中也启用了 mod_rewrite

还有其他解决方案吗?

5 个答案:

答案 0 :(得分:1)

application/config/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>

更新2018-02-27

$config['base_url'] = 'https://stackoverflow.com/'; # Must fill

否则您会收到此错误Codeigniter echoing [::1] instead of localhost

使用此.htaccess

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

Refference

答案 1 :(得分:0)

在配置文件中尝试此操作

$config['base_url'] = '';
$config['server_root'] = $_SERVER['DOCUMENT_ROOT'];

答案 2 :(得分:0)

这个对我来说很好,你可以试试这个

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

答案 3 :(得分:0)

这对我有用[在 linux操作系统]:

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

答案 4 :(得分:0)

在配置文件中使用base_url中的项目URL

$config['base_url'] = 'http://localhost/project';