CodeIgniter框架的所有入口都是index.php, 比如http://localhost/index.php/controller/action/parameters
那么如何省略掉URL 上的 index.php, 让URL更简化:http://localhost/controller/action/parameters
有以下两大步:
1. 通过.htaccess 文件重写, 这里假设你的apache 已经支持重写以及支持.htaccess文件了,并且可以正常访问CI框架。
.htaccess内容如下 :
RewriteEngine on RewriteCond $1 !^(index\.php|images|robots\.txt) RewriteRule ^(.*)$ /index.php/$1 [L]
.htaccess文件的好处是修改后不用重启服务即可生效。
到这里第一步完成了, 再去浏览器试试http://localhost/controller/action/parameters (这是演示路径,具体是你的测试地址),去掉了index.php访问正常。
但问题是,你按原来的带index.php的路径去访问,依然可以访问。
那么这就是不全面去除了,因为用户还可以输入带index.php路径访问你的页面, 这样对搜索引擎SEO也不好,因为搜索引擎可能会收录了两种页面地址, 这样分散权重。彻底去除,我们可以看下面第二步:
2. CI框架提供了非常灵活的扩展机制,用户可以在application的相应目录里扩展系统的类,CI会优先去读application里的类,如果没有找到,再去读系统默认的类。
这里我们在application/core里新建立一个MY_Controller.php文件扩展系统的CI_Controller,这个MY_前缀是可以在application/config/config.php配置文件里修改的。扩展类代码如下:
<?php class MY_Controller extends CI_Controller { public function __construct(){ parent::__construct(); $this->dealWithIndexPage(); } protected function dealWithIndexPage(){ $uri = $this->input->server('REQUEST_URI',true); //deal with index.php if(strpos($uri,'index.php')!==false){ $this->load->helper('url'); redirect('/error/'); } } }
这里我们将所有的URL上带有index.php的路径跳转到我们自定义的错误页面,这样就不会再出现带index.php的链接了,是不是很方便呢?
至于自定义错误页面,你可以放置网站的地图方便用户定位,或者放置有个性的图片说明,这就看你的创意了 :)
相关推荐
这主要涉及到Apache服务器的`mod_rewrite`模块,以及CodeIgniter框架的配置调整。以下是详细的步骤: 1. **启用`mod_rewrite`模块**: 在Apache服务器上,确保`mod_rewrite`模块已启用。你可以通过查看`httpd.conf...
- **URL 管理**:支持自定义 URL 格式,去除 index.php 文件,实现美观且 SEO 友好的 URL。 - **控制器**:作为 MVC 的中心,负责处理请求、调用模型和渲染视图。 - **视图**:用于展示数据给用户,支持动态数据...
当在lighttpd环境下部署使用CodeIgniter框架的PHP应用时,URL重写是实现美观URL和避免index.php暴露的重要步骤。本文将详细介绍如何为lighttpd服务器设置URL重写规则,以便正确地处理CodeIgniter框架生成的路由。 ...
本篇文章将详细介绍如何在Nginx环境中配置CodeIgniter框架,以解决上述问题。 首先,我们需要修改Nginx的配置文件。在Nginx的配置文件(通常位于/etc/nginx/sites-available/或/etc/nginx/conf.d/)中,创建或编辑...
一般都是基于php框架开发,php框架一般都会讲究优雅链接,比如Laravel,CodeIgniter,ThinkPHP等都是支持这种链接模式的,在服务器配置上也叫作url重写,目前框架大都采用单一入口的index.php然后基于MVC模式的话...
- **如何去掉CodeIgniter URL中的index.php**:指导如何配置 `.htaccess` 文件或服务器设置,以实现无`index.php`的友好的URL。 - **CodeIgniter针对lighttpd服务器URL重写的方法**:介绍了在lighttpd服务器上设置...
- **去除index.php**:为了让URL更加美观,通常需要去除URL中的index.php部分。这可以通过修改Web服务器的配置文件来实现,例如,在Nginx中,可以使用rewrite规则重写请求路径。 以上就是CI框架学习笔记(一)中...
12. **去除数组空值**:使用`array_filter()`函数配合自定义回调函数可以移除数组中的空值。 13. **CSRF与XSS攻击**:CSRF(跨站请求伪造)攻击通过让用户执行非预期的操作;XSS(跨站脚本)攻击是注入恶意脚本到...