CodeIgniter框架如何去掉url中的index.php
3个回答
展开全部
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了
下面就针对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了
2015-08-06 · 知道合伙人软件行家
关注
展开全部
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。
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。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
默认情况下,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]
example.com/index.php/news/article/my_article
你可以很容易的通过 .htaccess 文件来设置一些简单的规则删除它。下面是一个例子,使用“negative”方法将非指定内容进行重定向:
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询