• CI框架多目录设置


    1,设置目的,前台与后台实现独立目录管理

    2.通过http://www.myci.com  访问前台,通过http://www.myci.com/admin 访问后台,
     

    多目录的意思是指在同一个网站中有多套程序,最简单的例子就是网站的前台展示与后台管理。二者由于在网站功能中分属不同部分,通常会有不同的界面,用到images/stylesheet/javavascript基本是分开的,所以设置不同目如以下:

    网站前台URL:http://www.myci.com 网站后台管理URL::http://www.myci.com/admin
    CI 2.0源码下载解压后文件结构如下图,默认是只有一个目录的

    CI框架多目录设置 - huangcheng - 蓝星

    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之下。

    CI框架多目录设置 - huangcheng - 蓝星

    第一个目标完成之后,现在通过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]

    ——————————————————————————
    附,.htacess知识



    官方方法:默认情况下,index.php 将被包含在你的 URL 中:

    example.com/index.php/news/article/my_article

    你可以很容易的通过 .htaccess 文件来设置一些简单的规则删除它。下面是一个例子,使用“negative”方法将非指定内容进行重定向:

    RewriteEngine on
    RewriteCond $1 !^(index\.php|images|robots\.txt)
    RewriteRule ^(.*)$ /index.php/$1 [L]

    注意:如果你的项目不在根目录请把上面这一句改为: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 />
    Options FollowSymLinks
    AllowOverride none
    Order deny,allow
    Deny from all
    </Directory>


    6. 不需要修改application/config/config.php中的$config['index_page'] = 'index.php';
  • 相关阅读:
    15.5.3 【Task实现细节】状态机的结构
    JavaWeb-EL的11个内置对象
    JavaWeb-EL入门
    JavaWeb-BeanUtils
    JavaWeb-JavaBean
    JavaWeb-JSP动作标签
    JavaWeb-include和taglib指令
    JavaWeb-pageContext对象
    JavaWeb-page指令
    JavaWeb-URL重写
  • 原文地址:https://www.cnblogs.com/aiqingqing/p/4389931.html
Copyright © 2020-2023  润新知