CodeIgniter框架如何去掉url中的index.php

 我来答
a5615671
2016-01-24 · TA获得超过1.7万个赞
知道大有可为答主
回答量:7578
采纳率:0%
帮助的人:1158万
展开全部
CodeIgniter框架,PHP开发中的一款MVC模式框架。去掉url中的index.php,需要对url进行重写。这个重写功能是由Apache服务器提供的,实际上不知框架的url可以从重写,任何一个项目的url都可以被重写。只要利用Apache服务器的重写规则。
下面就针对CodeIgniter框架去掉url中的index.php来具体说说步骤:
加载mod_rewrite.so模块,在httpd.conf中,将“LoadModule rewrite_module modules/mod_rewrite.so”前面的“#”去掉
开启url重写功能。在httpd.conf文件中加上:
<Directory "D:/phpserver/www/CodeIgniter">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>

这个是为了让Apache支持D:/phpserver/www/CodeIgniter文件夹下的.htaccess文件(具体目录要换成实际项目中的根目录)
在D:/phpserver/www/CodeIgniter文件夹下加入.htaccess文件(注意前面的小数点),文件内容如下:
RewriteEngine on
RewriteCond $1 !^(index\.php|images|js|css|robots\.txt) //上面的代码意思是排除某些目录或文件,使得这些目录不会 rewrite 到 index.php 上,这一般用在图片、js、css 等外部资源上。也就是说非 PHP 代码都要排除出去。
RewriteRule ^(.*)$ /CodeIgniter/index.php/$1 [L]

修改还要修改 config.php 这个文件中的下列内容:
$config['index_page'] = 'index.php'
改为
$config['index_page'] = ''

这样就可以在url中直接写Controller和Function名,而不用加上index.php了
杜爷1号
2015-08-06 · 知道合伙人软件行家
杜爷1号
知道合伙人软件行家
采纳数:4973 获赞数:9186
毕业于福建农林大学,本科学士学位。从事IT行业3年,曾参与过多个大型项目的需求调研、软件研发。

向TA提问 私信TA
展开全部
1. 打开apache的配置文件,conf/httpd.conf :
LoadModule rewrite_module modules/mod_rewrite.so,把该行前的#去掉。
搜索 AllowOverride None(配置文件中有多处),看注释信息,将相关.htaccess的该行信息改为AllowOverride All。

2. 在CI的根目录下,即在index.php,system的同级目录下,建立.htaccess,直接建立该文件名的不会成功,可以先建立记事本文件,另存为该名的文件即可。内容如下(CI手册上也有介绍):

代码如下:

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

如果文件不是在www的根目录下,例如我的是:http://www.nowamagic.net/CodeIgniter/,第三行需要改写为RewriteRule ^(.*)$ /CodeIgniter/index.php/$1 [L]。
另外,我的index.php的同级目录下还有js文件夹和css文件夹,这些需要过滤除去,第二行需要改写为:RewriteCond $1 !^(index\.php|images|js|css|robots\.txt)

3.将CI中配置文件(system/application/config/config.php)中$config['index_page'] = "index.php";将$config['index_page'] = ""; 。

代码如下:

/*
|--------------------------------------------------------------------------
| Index File
|--------------------------------------------------------------------------

| Typically this will be your index.php file, unless you've renamed it to
| something else. If you are using mod_rewrite to remove the page set this
| variable so that it is blank.

*/
$config['index_page'] = '';

重启apache。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
作宋以唐诗9952
2015-08-05 · 超过46用户采纳过TA的回答
知道答主
回答量:71
采纳率:0%
帮助的人:81.4万
展开全部
默认情况下,index.php 文件将被包含在你的 URL 中:

example.com/index.php/news/article/my_article

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

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式