zoukankan      html  css  js  c++  java
  • 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';
  • 相关阅读:
    AtCoder Regular Contest 093
    AtCoder Regular Contest 094
    G. Gangsters in Central City
    HGOI 20190711 题解
    HGOI20190710 题解
    HGOI 20190709 题解
    HGOI 20190708 题解
    HGOI20190707 题解
    HGOI20190706 题解
    HGOI 20190705 题解
  • 原文地址:https://www.cnblogs.com/aiqingqing/p/4389931.html
Copyright © 2011-2022 走看看