CI框架多目录设置
1,设置目的,前台与后台实现独立目录管理
多目录的意思是指在同一个网站中有多套程序,最简单的例子就是网站的前台展示与后台管理。二者由于在网站功能中分属不同部分,通常会有不同的界面,用到images/stylesheet/javavascript基本是分开的,所以设置不同目如以下:
网站前台URL:http://www.myci.com 网站后台管理URL::http://www.myci.com/admin
CI 2.0源码下载解压后文件结构如下图,默认是只有一个目录的
2、设置入口文件。因为根目录下的index.php默认是去找applcation下的controllers下的控制器,为了读取applcation/admin/controllers下的控制器,我们需要在网站根目录下新建admin文件,并将根目录下的index.php复制至此,接下来编辑此index.php,找到:
1 |
$system_path = "system" ; //改为 $system_path = "../system"; |
2 |
$application_folder = "application" ; //改为 $application_folder = "../application/admin"; |
另外此目录可能用到的css/js/images 文件夹 也可以放在新建的admin之下。
第一个目标完成之后,现在通过URL http:www.//myci/admin 可以去读取当前应用程序里面配置文件中默认设置好的控制器welcome,但是对于非默认的控制器读取url就有些略长了,比如在admin/applcation/controllers里有一个login控制器(对应程序就是login类)用来显示后台登陆页面,需要通过这个url才能访问 http://www.myci/admin/index.php/login/index ,根据CI规则,如果url中不写类的方法会默认读取index()方法,所以上面这个url也可以通过http://www.myci/admin/index.php/login访问。
要实现的目标显然不是上面这个,这个URL中还有一个index.php是看着不舒服的,真正的目标是把它去掉。实现方式其实很简单,那就是通过.htaccess文件对URL重写(rewrite)。接下来在根目录下admin文件里里面创建一个.htaccess文件,内容如下:
RewriteEngine on
RewriteCond $1 !^(index\.php|images|css|js|scripts|robots\.txt)
RewriteRule ^(.*)$ /manage/index.php/$1 [L]
官方方法:默认情况下,index.php 将被包含在你的 URL 中: example.com/index.php/news/article/my_article 你可以很容易的通过 .htaccess 文件来设置一些简单的规则删除它。下面是一个例子,使用“negative”方法将非指定内容进行重定向: RewriteEngine on 注意:如果你的项目不在根目录请把上面这一句改为:RewriteRule ^(.*)$ index.php/$1 [L] 在上面的例子中,可以实现任何非 index.php、images 和 robots.txt 的 HTTP 请求都被指向 index.php。 官方方法的问题: 1. 没有说明.htaccess文件创建到哪个目录;.htaccess文件放到index.php所在目录,一般为CodeIgniter跟目录。 2. 不用管application和system目录中的.htaccess 3. 若项目不在根目录,则需要在最后一句语句加上ci所在目录的路径, RewriteRule ^(.*)$ /ci_dir/index.php/$1 [L] eg. index.php文件在wwwroot\\codeigniter,wwwroot是跟目录,则最后一句改为 RewriteRule ^(.*)$ /codeigniter/index.php/$1 [L] 4. [中级] 有效删除URL中的index.php http://codeigniter.org.cn/forums/thread-15444-1-1.html 这个博客中的RewriteCond $1 !^(index\\\\.php|images|robots\\\\.txtl)最后多了一个l 5. apache一般默认都加载了重写模块,具体可以查看 Apache\\conf\\httpd.conf文件 LoadModule rewrite_module modules/mod_rewrite.so 以下内容不需要修改 <Directory /> 6. 不需要修改application/config/config.php中的$config['index_page'] = 'index.php'; |
CI框架多目录设置的更多相关文章
- CI框架 default_controller 如何设置为:'目录/Controller' 转
闲谈 前几天,我的室友发现了一个问题:CI框架的Router.php文件的default_controller设置为application\controllers文件下的 一级PHP文件名 就可以,设 ...
- CI框架源码阅读笔记3 全局函数Common.php
从本篇开始,将深入CI框架的内部,一步步去探索这个框架的实现.结构和设计. Common.php文件定义了一系列的全局函数(一般来说,全局函数具有最高的加载优先权,因此大多数的框架中BootStrap ...
- CI 框架源码解析一之入口文件 index.php
Index.php作为CI框架的入口文件,源码分析,自然而然由此开始.在源码分析的过程中,我们并不会逐行进行解释,而只解释核心的功能和实现,如果英文水平很好的话,读过index.php文件的英文注释之 ...
- windows下安装CI框架
CI框架是一个非常流行的 mvc框架, CI框架如何安装和使用,在CI中文网已经讲的比较详细了 ,这里记录下几个需要注意的地方. 一. index.php问题 把压缩包下载解压到项目根目录即可运行里面 ...
- CI框架源代码阅读笔记3 全局函数Common.php
从本篇開始.将深入CI框架的内部.一步步去探索这个框架的实现.结构和设计. Common.php文件定义了一系列的全局函数(一般来说.全局函数具有最高的载入优先权.因此大多数的框架中BootStrap ...
- CI 框架 隐藏index.php 入口文件 和 设置访问application下子目录
1.隐藏根目录下 index.php, 在根目录下创建 .htaccess文件 内容如下: <IfModule mod_rewrite.c> RewriteEngine on Rewrit ...
- php CI框架目录结构及运行机制
CI目录结构 CI主要组成部分为,application(应用文件夹).system(系统文件夹)和index.php入口文件. 应用文件夹中主要是存放控制器.模型和视图等,系统文件夹中主 ...
- CI框架如何在主目录application目录之外使用uploadify上传插件和bootstrap前端框架:
19:29 2016/3/10CI框架如何在主目录application目录之外使用uploadify上传插件和bootstrap前端框架:项目主路径:F:\wamp\www\graduationPr ...
- php上传zip文件在线解压文件在指定目录下,CI框架版本
我从网上找的文件php在线解压zip压缩文件 文件为jy.php可以直接执行,但是怎样将其加到CI框架中呢?? jy.php文件 <?php header("content-Type: ...
随机推荐
- [LeetCode#204]Factorial Trailing Zeroes
Problem: Description: Count the number of prime numbers less than a non-negative number, n. Analysis ...
- 【转】模拟器上安装googleplay apk
原文网址:http://blog.sina.com.cn/s/blog_9fc2ff230101gv57.html 1.进入到sdk\android-sdk-windows\tools>目录下: ...
- 网络编程——TCP协议的三次握手和四次挥手
三次握手原理解析 TCP握手协议在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接. 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND ...
- hdu 4414 暴力枚举
#include <cstdio> #include <cstring> #include <iostream> #include <cmath> #i ...
- poj 2479 Maximum sum (最大字段和的变形)
题目链接:http://poj.org/problem?id=2479 #include<cstdio> #include<cstring> #include<iostr ...
- 合并多次提交 commits 到 新分支
压缩多个Commit 当你提交代码进行代码审查时或者创建一次pull request (这在开源项目中经常发生),你的代码在被接受之前会被要求做一些变更.于是你进行了变更,并且直到下一次审查之前你没有 ...
- 怎样在delphi中实现控件的拖拽
下面这2种方法都能实现对控件和窗体的拖拽 方法1 procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift ...
- 【POJ3182】The Grove BFS 最短路径周围
意甲冠军:给定一个N*M图.,间'X'代表树木(树木必须汇集到森林,非分离),然后,'.'它代表的空间.'*'它代表的起点.现在它需要从起点.一圈,最后回到起点,所经过最少点数. 题目中给的'+'就是 ...
- I/O体系结构和设备驱动程序
http://blog.csdn.net/kafeiflynn/article/category/789844
- iOS 自动布局总结
参考自以下文章: http://blog.csdn.net/ysy441088327/article/details/12558097 http://blog.csdn.net/zhouleizhao ...