返回首页
当前位置: 主页 > 网络编程 > Php实例教程 >

ci框架去除index.php详细分析

时间:2013-04-06 22:45来源:知行网www.zhixing123.cn 编辑:麦田守望者

ci框架一般访问时要用www.xxx.com/index.php/controllername/functionname/这种来访问,问题是带着index.php非常难看。本文考虑去除index.php。当然这种去除并不是实际去除,而是通过重写机制,即如果写www.test.com/abc/cd/即相当于访问www.test.com/index.php/abc/cd/

打开httpd.conf文件找到

#LoadModule rewrite_module modules/mod_rewrite.so

去除#号,即变成

LoadModule rewrite_module modules/mod_rewrite.so

搜索AllowOverride

遇到AllowOverride None统一改成AllowOverride All

现在rewrite已经完全开启了

 

接下来我们来讨论一下。对ci框架中的index.php重写问题

 

默认情况下,index.php 文件将被包含在你的 URL 中:

example.com/<var>index.php</var>/news/article/my_article

你可以很容易的通过 .htaccess 文件来设置一些简单的规则删除它。下面是一个例子,使用“negative”方法将非指定内容进行重定向:

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

如果你的项目不在根目录请把上面这一句改为:RewriteRule ^(.*)$ index.php/$1 [L]

在上面的例子中,可以实现任何非 index.php、images 和 robots.txt 的 HTTP 请求都被指向 index.php。

ci文档中有如下说明:我来详细解析下:

建立一个.htaccess文件(windows一般不能直接重命名为.htaccess,可以通过另存为.htaccess,即建立了一个.htaccess文件)在.htaccess文件中添加如下内容:

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

第一句,开启rewrite

第三句。对url重写。本例中以根目录对url重写,当然如果不是放在根目录中,可使用上面的话RewriteRule ^(.*)$ index.php/$1 [L]现在整个目录下访问的文件都会加上index.php,这显然是不合理的,比如我要访问www.test.com/images/aa.jpg,此时会重写成www.test.com/index.php/images/aa.php,这时候就会造成访问不到的情况,所以要把这些排除在外

第二句:这名其实是建立的第三句基本上的。去除那些不要重写的文件。

最后一步了,你要去除application/config/config.php中的index.php

即这里的

$config['index_page'] = ‘index.php’;变成$config['index_page'] = ”;

现在你就可以享受无index.php。其他的框架如果要重写方法类似

如果还有不懂的话,message to me.

------分隔线----------------------------
标签(Tag):php php教程 php实例教程 php5 php源代码 php基础教程 php技巧 php6
------分隔线----------------------------
推荐内容
猜你感兴趣