CI框架伪静态化配置

伪静态化,即:去掉入口的index.php, 在url后面加上 .html 后缀

CI默认的rewrite url中是类似这样的,例如你的CI根目录是在/CodeIgniter/下,你的下面的二级url就类似这样 http://localhost/CodeIgniter/index.php/welcome。不太好看,怎么把其中的index.php去掉呢?

开启 rewrite_module

首先,你要清楚自己的 Web 服务器是 Apache ,支持 mod_rewrite,并且已经配置好 rewrite 相关的参数。

  • 加载 rewrite_module

      // 打开 conf/httpd.conf 找到下面这句,去掉前面的#
    #LoadModule rewrite_module modules/mod_rewrite.so
  • 网站根目录添加 .htaccess
    在网站根目录添加 .htaccess内写伪静态正则代码,这个文件可以在conf/httpd.conf 中的AccessFileName .htaccess指定

    也可以直接在conf/httpd.conf中添加伪静态正则代码,然后重启apache(apache -k restart)就可以使用伪静态地址啦。

      > 如果没有安装 mod_rewrite,可以重新编译 Apache(或若为win系统建议重新安装),并在原有 configure 的内容中加入 –enable-rewrite=shared,然后再在 Apache 配置文件中加入正则代码。

mod_rewrite 简介和配置

Rewirte主要的功能就是实现URL的跳转和隐藏真实地址,基于Perl语言的正则表达式规范。平时帮助我们实现拟静态,拟目录,域名跳转,防止盗链等

mod_rewrite 规则的使用

# .htaccess:
RewriteEngine on
# 锁定域名
RewriteCond %{HTTP_HOST} !^www.iphpmysql.cn [NC]
RewriteRule ^/(.*) http:// www.iphpmysql.cn / [L] RewriteEngine on
# RewriteRule 前面没有设置 RewriteCond 则为无条件重写
RewriteRule ^/test([0-9]*).html$ /test.php?id=$1 # test102.html -> test.php?id=102 伪静态url
RewriteRule ^/new([0-9]*)/$ /new.php?id=$1 [R]

mod_rewrite 规则修正符:

  1. R 强制外部重定向
  2. F 禁用URL,返回403HTTP状态码。
  3. G 强制URL为GONE,返回410HTTP状态码。
  4. P 强制使用代理转发。
  5. L 表明当前规则是最后一条规则,停止分析以后规则的重写。
  6. N 重新从第一条规则开始运行重写过程。
  7. C 与下一条规则关联
  8. T=MIME-type (force MIME type) 强制MIME类型
  9. NS 只用于不是内部子请求
  10. NC 不区分大小写
  11. QSA 追加请求字符串

  12. NE 不在输出转义特殊字符 eg: \%3d$1 等价于 =$1

--

# CI根目录/.htaccess :
RewriteEngine on
# 排除某些目录或文件
RewriteCond $1 !^(index\.php|images|css|js|robots\.txt) # $1为下面RewriteRule捕获的元组?
RewriteRule ^(.*)$ /index.php/$1 [L]

要注意 /index.php/$1 要根据你目录(Web目录,比如 http://www.domain.com/index.php)的实际情况来定,比如网站根目录是 /ci/index.php 则要写成 /ci/index.php/$1

最后还要修改 CIDirectory/config/config.php :

/*
|--------------------------------------------------------------------------
| 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'] = "index.php";
$config['index_page'] = "";

如果经过以上设置还是不成功的话就是Apache配置问题啦。

试试 httpd.conf文件中:

# AllowOverride None
# 改为
AllowOverride All

CI框架伪静态化配置的更多相关文章

  1. nginx location匹配顺序及CI框架的nginx配置

    Nginx location匹配顺序如下: 用前缀字符串定义的location规则对URI进行匹配测试. =号定义了精确的前缀字符串匹配,如果发现精确匹配则使用当前规则.否则继续下一步匹配. 匹配其它 ...

  2. php ci nginx 伪静态rewrite配置方法

    php ci nginx 伪静态rewrite配置方法 location / { if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=/$ ...

  3. CI框架+Umeditor上传图片配置信息

    Umeditor提供了一个上传文件通用的类Uploader.class.php, 首先将Uploader.class.php类放入CI框架的libraries目录下更名为Myuploader.php然 ...

  4. 在CI框架中的配置整合amfphp

    之前做的项目用到CI框架和amfphp的整合,主要用于php与flex的交互,在此做一下记录: 一. 安装CI框架: 1.  搭建PHP运行环境,本人在WIN7下用WAMP作测试,安装目录:d:/wa ...

  5. CI 框架 伪静态设置 去掉index.php

    .htaccess文件修改 DirectoryIndex index.php RewriteEngine on RewriteBase / RewriteCond %{REQUEST_FILENAME ...

  6. CI框架源码阅读笔记3 全局函数Common.php

    从本篇开始,将深入CI框架的内部,一步步去探索这个框架的实现.结构和设计. Common.php文件定义了一系列的全局函数(一般来说,全局函数具有最高的加载优先权,因此大多数的框架中BootStrap ...

  7. CI框架源码阅读笔记1 - 环境准备、基本术语和框架流程

    最开始使用CI框架的时候,就打算写一个CI源码阅读的笔记系列,可惜虎头蛇尾,一直没有行动.最近项目少,总算是有了一些时间去写一些东西.于是准备将之前的一些笔记和经验记录下来,一方面权作备忘,另一方面时 ...

  8. CI框架源代码阅读笔记3 全局函数Common.php

    从本篇開始.将深入CI框架的内部.一步步去探索这个框架的实现.结构和设计. Common.php文件定义了一系列的全局函数(一般来说.全局函数具有最高的载入优先权.因此大多数的框架中BootStrap ...

  9. CI框架--URL路径跳转与传值

    CI框架使用URL的前提是需要加载辅助函数$this->load->helper('url');当然我建议大家将所有需要加载的东西写在构造方法内,这样就不需每个控制器每个方法都去调用一次了 ...

随机推荐

  1. 当滚动列表的时候,让input框失去焦点(移动端会收起键盘)

    1.拓展scroll.vue事件 beforeScroll:{ type:Boolean, default:false } if(this.beforeScroll){//滚动列表的时候收起键盘(移动 ...

  2. Lambda表达式常用代码示例

    Lambda表达式常用代码示例 2017-10-24 目录 1 Lambda表达式是什么2 Lambda表达式语法3 函数式接口是什么  3.1 常用函数式接口4 Lambdas和Streams结合使 ...

  3. Python3.5爬取豆瓣电视剧数据并且同步到mysql中

    #!/usr/local/bin/python # -*- coding: utf-8 -*- # Python: 3.5 # Author: zhenghai.zhang@xxx.com # Pro ...

  4. Linux各个文件夹的作用~~~非常实用!!

    linux下的文件结构,看看每个文件夹都是干吗用的/bin   二进制可执行命令 /dev 设备特殊文件 /etc 系统管理和配置文件 /etc/rc.d 启动的配置文件和脚本 /home 用户主目录 ...

  5. YII登陆错误 mcrypt_create_iv()

    使用php框架YII进行开发的时候,虽然很快,性能很好,但是也有一些小问题,现在记录下来. 1.在使用gii的自动代码生成后,登陆系统,就会报错 mcrypt_create_iv() [<a h ...

  6. bzoj1103【POI2007】大都市meg

    1103: [POI2007]大都市meg Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 1544  Solved: 776 [Submit][St ...

  7. 【MySql 】is not allowed to connect to this MySql server 无法访问远程MySQL数据库

    问题:访问远程MySQL数据库时报错[is not allowed to connect to this MySql server ]不允许访问,因为MySQL默认只有本机localhost能够访问M ...

  8. java 集合排序

    Java API针对集合类型排序提供了两种支持:java.util.Collections.sort(java.util.List)java.util.Collections.sort(java.ut ...

  9. CDH版本java开发环境搭建

    1. maven设置 除了阿里云库,还需要引入 cdh, spring库.需要修改maven下面的配置文件setting.xml, 参考下面设置. <mirror> <!--This ...

  10. Spring Cloud Config 配置高可用集群

    详细参考:<Sprin Cloud 与 Docker 微服务架构实战>p163-9.10节 spring cloud config 与 eureka 配合使用 我就不写了,请参见本书章节.