CodeIgniter(下面简称"CI")是一款国外优秀的PHP轻量级MVC框架,它支持PHP4和PHP5。是开发中小型可拓展性需求高的Web应用程序的利器。眼下你所见到的这个博客程序,正是採用CI进行的编写。

秉承MVC架构的思想,CI中的全部控制器都须要经过单点入口文件index.php(默认)来载入调用。

也就是说。在默认情况下,全部CI开发项目的URL都形例如以下面这样的形式:

http://localhost/index.php/blog/logs/this_is_a_test_entry

非常显然。默认情况下。index.php在URL地址段中的存在一定程度上影响了URL的简洁和SEO的进行。

我们能够通过以下本文介绍的方法来去掉这个讨厌的Index.php。

你也许已经注意到在CodeIgniter用户手冊中,已经存在关于此问题的解决方法。

但官方提供的这个.htaccess配置,并非全部时候都能解决这个问题。本文如今给出一个更完好的解决方式。

注意:在继续之前,请确认你的主机支持.htaccess配置。当中。假设Apache作为Webserver,须要开启mod_rewrite模块的支持;假设将IIS作为Webserver,则须要额外安装ISAPI_Rewrite拓展。

详细方法例如以下:

1. 将下面配置信息复制并保存为.htaccess文件。

下面为.htaccess文件信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14

RewriteEngineOn

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule^ [L]

/index.php

2. 将以上.htaccess文件上传到CI所在项目的根文件夹(即与index.php同级文件夹下)

3. 改动application/config.php中的例如以下參数:

1 $config['index_page'] = "index.php";

1 $config['index_page'] = ""; //设置为空

以上三步。缺一不可。假设一切配置正常。你会发现,再次执行程序的时候。程序已经自己主动隐藏index.php这个URL段了!

Trackback(UTF-8):http://www.cnSaturn.com/trackback/40

CodeIgniter中开启PATH_INFO时mod_rewrite隐藏index.php的问题

在CodeIgniter中,当我将URI寻址方式从AUTO更改为PATH_INFO时。即:

$config['uri_protocol'] = 'PATH_INFO';

注:PATH_INFO的开启。是由于我希望通过$_GET来取值,而不是系统默认的POST方式。

在此情况下怎样仍然使用以上.htaccess方案,结果将是:index.php顺利隐藏,但主控制器并不能正确的获取值。

解决方式例如以下,就一步:

去掉下面重写规则中index.php后面的问号就可以。

 RewriteRule^(.*)$ /index.php?

/$1[L]

改动后的规则例如以下:

RewriteRule^(.*)$ /index.php/$1 [L]

其它地方不变。

=============================================================================================================

【其它】跟我学站点开发框架CodeIgniter之url篇

怎样删除index.php文件

预计非常多人学习CodeIgniter第一步想做的就是怎样去掉index.php,这个官方手冊就有相关教程,改动.htaccess 文件(前提是你的server是apache):

RewriteEngine on

RewriteCond $1 !^(index\.php|images|robots\.txt)

RewriteRule ^(.*)$ /index.php/$1 [L]

当然了。有非常多人依照要求改动了,可是却出现了错误,全部的訪问都404了,并且。这个404是apache的404页面。而不是CodeIgniter的404错误页面。

出现这样的问题,是对apache的rewrite规则不理解:

  • 第一行、将RewriteEngine引擎设置为on,就是让url重写生效。
  • 第二行、配置url重写规则。!^(index\.php|images|robots\.txt) 这个正則表達式指明了哪些文件不须要重写,而是直接訪问;
  • 第三行、^(.*)$是一个正則表達式,意思是对全部请求都发送到/index.php/$1。熟悉url的人都知道,以反斜杠(/)开头的,都是相对路径,相对于谁呢?根,也就是网址。

所以呢,假设CodeIgniter假设不是安装在站点的根文件夹,必定会出现错误。怎样解决呢,在CodeIgniter手冊中也给出了对应的解决方式:

把上面最后一句改为:RewriteRule ^(.*)$ index.php/$1 [L]

仅仅须要去掉index.php前面的斜杠即可。

怎样加入url后缀

通过上面的步骤。我们已经隐藏了index.php了,如今我们制作的站点更加的rest了。一般人已经无法一眼就看出你的站点是用CodeIgniter开发的,还是ROR开发的。

可是,怎样在url后面添加后缀呢,这样,我们甚至能够隐藏或者伪造站点的开发语言,通过改动 config/config.php 文件,你能够为 CodeIgniter 生成的 URL 加入一个指定的文件后缀,比方你能够加入.html,甚至你能够加入.asp,.jsp。

这样我们就能够将 http://www.hualai.net.cn/index.php/news/view/about 变成 http://www.hualai.net.cn/index.php/news/view/about.html。

怎样使用查询字符串

普通情况下我们不须要使用查询字符串,可是,总有一些特殊情况,是我们用CodeIgniter的rest模式无法完毕的,这样我们就须要在 URL 中使用查询字符串:

index.php?c=products&m=view&id=345

CodeIgniter 默认此功能是关闭的,假设想开启的话。打开配置文件 application/config/config.php 您能够看到例如以下内容:

$config['enable_query_strings'] = FALSE;

$config['controller_trigger'] = 'c'; //控制器名

$config['function_trigger'] = 'm'; //方法名

$config['directory_trigger']='d'; //控制器所在子文件夹名称

假设你将 enable_query_strings 更改为 TRUE 。那么这个功能就被激活了。此时,你就能够通过keyword来调用须要的控制器和方法了:

index.php?c=controller&m=method

当我们在使用CodeIgniter当进行分页,这可以派上用场。

版权声明:本文博客原创文章,博客,未经同意,不得转载。

CI框架 .htaccess 隐藏url在index.php解决方案的更多相关文章

  1. CodeIgniter框架中关于URL(index.php)的那些事

    最近,在做自己的个人网站时,采用了轻量级的php框架CodeIgniter.乍一看上去,代码清晰简洁,MVC模型非常容易维护.开发时我采用的工具是Netbeans IDE 8.0,当然,本文的内容和开 ...

  2. PHP 之 Ci框架下隐藏index.php

    1. 修改 apache 配置文件 开启重写模块 conf/httpd.conf 去掉前面的# LoadModule rewrite_module modules/mod_rewrite.so 对于U ...

  3. Ubuntu-server 下Apache2 配置.htaccess 隐藏thinkPHP项目index.php

    需要开启Apache2的rewrite模块 1.打开/etc/apache2/apache2.conf 将文件中的AllowOverride None改为AllowOverride All 2.修改m ...

  4. 四、CI框架之通过URL路径访问C中的函数

    一.在C中写一个test001函数 二.在路径http://127.0.0.1/CodeIgniter-3.1.10/index.php/welcome/test001中访问 不忘初心,如果您认为这篇 ...

  5. Linux下部署tp5项目如何隐藏URL中index.php

    找到nginx配置文件,加入以下代码: location / { if (!-e $request_filename){ rewrite ^/(.*)$ /index.php?s=/$1 last; ...

  6. 在nginx下去掉ci框架url中的index.php

    ci框架默认的url规则中带有应用的入口文件,例如: example.com/index.php/news/article/my_article 在以上URL中带有入口文件index.PHP,这样的U ...

  7. CodeIgniter框架url去index.php(转)

    针对apache,支持mode_rewrite可以通过在目录先建立.htaccess去掉url中index.php .htaccess内容如下: RewriteEngine on RewriteCon ...

  8. CI 框架怎么去掉隐藏入口文件 index.php

    当我重新接触一个框架的时候首先肯定要去掉入口文件,也就是index.php 这个东西在url上很不漂亮,而且每次我访问我的网站的时候都要打进去url里面.这样告诉一个去掉 CI框架里面入口文件的方法, ...

  9. CI 框架隐藏index.php-ubuntu

    和朋友在做一个小网站,用到了CI框架,之前测试都是在windows上,隐藏index.php也相对比较简单.但服务器是ubuntu系统,需要配置一下,根据网上看到的一些教程,结合自己电脑的特点,记录步 ...

随机推荐

  1. ashx一般处理程序和HttpHandler

    asp.net项目中,使用.ashx的文件(一般处理程序)可以用于处理客户端发送来的请求,并将服务器端的处理结果返回给客户端.它能返回的类型可以是文本.或者图片.有时候,我们可以在项目中使用.cs的文 ...

  2. C#采用的是“四舍六入五成双”、上取整、下取整

    c# 四舍五入.上取整.下取整 Posted on 2010-07-28 12:54 碧水寒潭 阅读(57826) 评论(4) 编辑 收藏 在处理一些数据时,我们希望能用“四舍五入”法实现,但是C#采 ...

  3. [Cocos2d-x]Mac下cocos2d-x连接pomeloserver

    Pomelo 是由网易开发的基于node.js 开发的高性能.分布式游戏server框架, 也可作为高实时web应用框架. Polemo的配置这里就不赘述了,Github的wiki非常全面. 在此记录 ...

  4. 如何出色的研究 RGSS3 (三) 形式的调整的细节

    在一个我们研究了添加到窗体方法的选择,这个问题来研究窗体类的细节. 所有形式的父类的 Window_Base 四个参数需要初始化. #--------------------------------- ...

  5. List toArrays()

    import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class ListToArray ...

  6. Spring3.0学习笔记文档的官方网站(六)--3.4.1

    3.4 依靠 3.4.1 依赖注入     依赖注入两种方式:基于构造函数DI.基于setter方法DI. 3.4.1.1 基于构造函数DI     参数是引进一个对象的.和缺乏父母之前-子类关系: ...

  7. hdu Tempter of the Bone (奇偶剪枝)

    学习链接:http://www.ihypo.net/1554.html https://www.slyar.com/blog/depth-first-search-even-odd-pruning.h ...

  8. C/C++各种类型int、long、double、char表示范围(最大和最小)

    #include<iostream> #include<string> #include <limits> using namespace std; int mai ...

  9. 数学思想方法-分布式计算-linux/unix技术基础(3)

    夹: ~表示当前用户的主文件夹 .它代表了当前文件夹 ..它代表的父文件夹 链接文件 使用不同的文件名指的是相同的数据或程序.硬链接 在相同的物理文件系统,创建一个硬链接 -bash-4.2$ fin ...

  10. .NET 对象序列化和系列化德

    DataSet ds = new DataSet(); //给ds赋值(省略) byte[] b = this.Serialize(ds); DataSet d1 = this.DeSerialize ...