Codeigniter 隐藏URL中index.php

最经有点想架设一个个人网站玩一玩, 前段时间试了试 zend framwork 觉得对于个人网站来说太过复杂, 所以开始尝试 Codeigniter。 基本原理是差不多的, 文档也比较全。

 

开始

Codeigniter  这个框架所有的链接都通过 index.php 来传递。 在默认情况下 链接中都需要加上 index.php 的, 当然在我们实际使用时, 是希望把这个去掉的。 很多人讲了很多方法, 我这里只有一点不同。

google搜了一下,官方文档上也有说明 :http://codeigniter.org.cn/user_guide/general/urls.html 。

大致上需要改两个地方 :

1) 修改根目录的.htaccess 文件 以修改服务器的 重新定向。 这个个人有不同改法, 我最终采用的是官方版本稍微修改了一下的形态 :

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond $1 !^(index\.php|images|js|img|css|robots\.txt) 
RewriteRule ^(.*)$ /index.php/$1 [QSA,L]

这一步需要你确认你的服务器开启了重新定向。

 

2) application/config/config.php 将 index_page 的值设’’

$config['index_page'] = '';

 

但是就在我完成了这两步之后, 重新定向任然不能成功。 具体表现是这样的 :

www.mysite/home  失败
www.mysite//home 成功

需要 加上 // 才可以是重新定向成功。 我尝试了许多方法, 也尝试修改 .htaccess  文件的最后一行都不可以。 最后的解决方法是 修改 application/config/config.php

$config['uri_protocol']    = 'PATH_INFO';

将原来的 AUTO 改为 PATH_INFO, 这里也有别人改为 REQUEST_URI, 在我的虚拟空间上是不可以的,应该跟服务器有关。

 

标签