隐藏CodeIgniter程序URL中index.php的方法
秉承MVC架构的思想,CodeIgniter中的所有控制器都需要经过单点入口文件index.php(默认)来加载调用。也就是说,在默认情况下,所有CodeIgniter开发项目的URL都形如以下这种形式:
http://localhost/index.php/blog/logs/this_is_a_test_entry
很显然,默认情况下,index.php在URL地址段中的存在一定程度上影响了URL的简洁和SEO的进行。我们可以通过下面本文介绍的方法来去掉这个讨厌的Index.php。
注意:在继续之前,请确认你的主机支持.htaccess配置。其中,如果Apache作为Web服务器,需要开启mod_rewrite模块的支持;如果将IIS作为Web服务器,则需要额外安装ISAPI_Rewrite拓展。
1. 编写.htaccess文件,并上传到网站根目录(即与index.php同级目录下)
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L]
# 如果没有安装mod_rewrite模块,所有的404页面都将被 # 发送到index.php,此时,程序会像没有设置隐藏时一样运行
ErrorDocument 404 /index.php
2. 修改application/config.php中的如下参数:
将
$config['index_page'] = "index.php";
修改成
$config['index_page'] = ""; //设置为空
http://localhost/index.php/blog/logs/this_is_a_test_entry
很显然,默认情况下,index.php在URL地址段中的存在一定程度上影响了URL的简洁和SEO的进行。我们可以通过下面本文介绍的方法来去掉这个讨厌的Index.php。
注意:在继续之前,请确认你的主机支持.htaccess配置。其中,如果Apache作为Web服务器,需要开启mod_rewrite模块的支持;如果将IIS作为Web服务器,则需要额外安装ISAPI_Rewrite拓展。
1. 编写.htaccess文件,并上传到网站根目录(即与index.php同级目录下)
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L]
# 如果没有安装mod_rewrite模块,所有的404页面都将被 # 发送到index.php,此时,程序会像没有设置隐藏时一样运行
ErrorDocument 404 /index.php
2. 修改application/config.php中的如下参数:
将
$config['index_page'] = "index.php";
修改成
$config['index_page'] = ""; //设置为空