【问题标题】:Where do I put image files, css, js, etc. in Codeigniter?我在 Codeigniter 中将图像文件、css、js 等放在哪里?
【发布时间】:2011-10-01 15:02:15
【问题描述】:

css文件夹和图片文件夹可以放哪里?我在想视图文件夹里面?但是控制器总是将路径重新路由到基本 url,所以我必须在 .html 文件中指定路径到它所在的位置,这是多余的。

【问题讨论】:

    标签: codeigniter web-applications frameworks codeigniter-2


    【解决方案1】:

    我有这样的设置:

    • 应用
    • 系统
    • 资产
      • js
      • 图片
      • CSS

    然后我有一个辅助函数,它根据我的设置简单地返回完整路径,类似于:

    application/helpers/utility_helper.php:

    function asset_url(){
       return base_url().'assets/';
    }
    

    我通常会将与此类似的常用例程保留在同一个文件中,并使用 codeigniter 的自动加载配置自动加载它。

    注意:base_url() 访问的自动加载 URL 帮助程序。

    application/config/autoload.php:

    $autoload['helper'] = array('url','utility');
    

    然后,您将可以在整个代码中访问asset_url()

    【讨论】:

    • 嗨 eddie,我想知道你把函数代码放在哪里。我应该把它放在 file_helper.php 中吗?
    • 嗨@KebyangBlabla 我已经更新了我的答案,提供了一些对你有帮助的信息。
    • 要访问“baseurl()”,您还需要包含“url”助手,如下所示:$autoload['helper'] = array('url', 'utility');
    • 一个更好的方法可能是在 web 根目录(我的是 public_html)文件夹中有一个 your assets 文件夹,然后在 web 根目录上方的目录中添加 CI。
    • 如果其他人像我一样,澄清一下,你可以这样访问它 =asset_url();?>css/css.css
    【解决方案2】:

    不,views文件夹里面不好。

    看: 您的项目中必须有 3 个基本文件夹:

    system // 这是 CI 框架,没有太多理由去碰这些文件

    应用程序 //这是您的逻辑所在,构成应用程序的文件

    public // 这必须是你的文档根目录

    出于安全原因,最好将框架和应用程序保留在文档根目录之外,(public_html、htdocs、public、www...等)

    在你的公共文件夹中,你应该把你的公共信息,浏览器可以看到的,常见的找到文件夹:images,js,css;所以你的结构将是:

    |- system/
    |- application/
    |---- models/
    |---- views/
    |---- controllers/
    |- public/
    |---- images/
    |---- js/
    |---- css/
    |---- index.php
    |---- .htaccess
    

    【讨论】:

    • public 文件夹中的 index.php 是什么?是404文件吗?谢谢
    • 抱歉耽搁了,但是对于 lo: T index.php 文件将捕获请求并调用框架的其余部分。
    • @Juan Jo ..我正在使用CodeIgniter-3.0.6。我找不到任何名为public的文件夹。添加同名文件夹是否有问题。
    • @AkhilVijay 你不会在你的 codeigniter 文件夹中找到它,当你在任何服务器上部署它时文件夹就会出现
    • 使用 codeigniter 的最佳方式是使用 .htaccess 删除 /index.php? 并使用 base_url().'public/yourfolder'; 调用公用文件夹
    【解决方案3】:

    这就是我处理公共资产的方式。这里我使用 Phalcon PHP 的 Bootstrap 方法。

    文件夹结构

    |-.htaccess*
    |-application/
    |-public/
      |-.htaccess**
      |-index.php***
      |-css/
      |-js/
      |-img/
      |-font/
      |-upload/
    |-system
    

    要编辑的文件

    1. .htaccess*

      对项目的所有请求都将被重写到 public/ 目录 使其成为文档根目录。此步骤可确保内部 项目文件夹保持隐藏,不让公众查看,从而消除 此类安全威胁。 - Phalconphp 文档

      <IfModule mod_rewrite.c>
          RewriteEngine on
          RewriteRule  ^$ public/    [L]
          RewriteRule  (.*) public/$1 [L]
      </IfModule>
      
    2. .htaccess**

      规则将检查请求的文件是否存在,如果存在,则 不必由 Web 服务器模块重写。 - Phalconphp 文档

      <IfModule mod_rewrite.c>
          RewriteEngine On
          RewriteCond %{REQUEST_FILENAME} !-d
          RewriteCond %{REQUEST_FILENAME} !-f
          RewriteRule ^(.*)$ index.php/$1 [QSA,L]
      </IfModule>
      
    3. index.php***

      修改application路径和system路径为,

      $system_path = '../system';
      $application_folder = '../application';
      

    现在您将 public 文件夹用作 base_url()."public/[YOUR ASSET FOLDER]"

    希望这会有所帮助:)

    【讨论】:

    • 你测试了上面的代码,我认为最后一行有错误,你将所有请求重定向到/public所以为什么base_url ()."public/[...!应该只是base_url ()."/[YOUR ASSET FOLDER]"
    【解决方案4】:

    我通常将所有类似的文件放入应用程序根目录中的“资产”文件夹中,然后确保使用Asset_Helper 为我指向这些文件。这就是 CodeIgniter 的建议。

    【讨论】:

      【解决方案5】:

      没有人说你需要修改.htacces并在重写条件下添加目录。 我在根目录中创建了一个目录“public”以及“system”、“application”、“index.php”。并像这样编辑 .htaccess 文件:

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

      现在您只需致电&lt;?php echo base_url()."/public/yourdirectory/yuorfile";?&gt; 您可以根据需要在“公共”目录中添加子目录。

      【讨论】:

      • 我迟到了数十亿年,但如果有人正在阅读这篇文章,这个答案是我最初的解决方案,但如果您通过虚拟主机管理访问,我认为指出虚拟主机到公用文件夹并保留 .htaccess 配置。无论如何都要投票,因为这个答案指向我的解决方案
      【解决方案6】:

      无论您将 CSS 文件放在何处,您都可以简单地使用名为 link_tag() 的 CodeIgniter “html”帮助程序。你可以像这样应用这个助手:

      echo link_tag('folder/subfolder/stylesheet.css');
      

      您可以自行决定将 CSS 文件放在最合适的位置(您认为)。您必须自动加载“html”帮助程序或单独加载它以使用它。

      人们一直建议使用 base_url() 来实现这一点,但实际上它并不是真正的“CodeIgniter”方式(我认为这个问题有一些重复)。这将起作用,但使用框架的原因之一是使用其中的预制功能。

      codeigniter 中有很多助手可以做这种事情。

      【讨论】:

        【解决方案7】:

        添加一个文件夹,任何名称,例如 public 并添加 .htaccess 文件并写入 allow from all 这意味着,在此文件夹中,您的所有文件和所有文件夹都不会出错禁止访问!这样使用它

        <link href="<?php echo base_url(); ?>application/public/css/style.css" rel="stylesheet" type="text/css"  />
        <script type="text/javascript" src="<?php echo base_url(); ?>application/public/js/javascript.js"></script>
        

        【讨论】:

          【解决方案8】:

          我正在使用最新版本的 CodeIgniter 3.1.0。 它的文件夹结构是:

          • 系统
          • 应用
          • 用户指南
          • 资产
            • 图片
            • js
            • CSS

          您应该将图片、css 和 js 文件放在 assets 文件夹中。

          【讨论】:

            【解决方案9】:

            我使用以下文件夹结构:

            application 
            system 
            static
                admin
                    js
                    css
                    images
                public
                    js
                    css
                    images
                uploads
                    original
                    thumbs
            

            【讨论】:

              【解决方案10】:

              (我是 Codeigniter 的新手,所以我不知道这是不是最好的建议)

              我将公开可用的文件保存在我的公用文件夹中。 他们在那里是合乎逻辑的,我不想将 Codeigniter 用于我不需要的事情。

              目录树如下所示:

              • /应用程序/
              • /公共/
              • /public/css/
              • /public/img/
              • /public/js/
              • /系统/

              我保留在 /public/ 中的唯一文件是 Codeigniter 的 index.php 和我的 .htaccess 文件:

              RewriteEngine On
              RewriteBase /
              
              RewriteRule ^css/ - [L]
              RewriteRule ^img/ - [L]
              RewriteRule ^js/ - [L]
              
              RewriteRule ^index.php(.*)$ - [L]
              RewriteRule ^(.*)$ /index.php?/$1 [L]
              

              【讨论】:

                【解决方案11】:

                您可以将 css 文件夹放在项目目录中的 assest 文件夹中(您可以将其命名为任意名称),如下所示:

                - ci_app
                - application 
                - views      
                - assets 
                  - css 
                    - style.css 
                

                ... 当您想在页面中加载该文件时,可以这样使用 base_url() 函数: <head> <link rel='stylesheet' href='<?php echo base_url();?>assets/css/style.css'> </head> 并且您一定要将项目的 base_url 添加到 config.php 文件中,如下所示:

                $config['base_url'] = 'http://localhost/ci_app';
                

                【讨论】:

                  【解决方案12】:

                  嗨,我们的结构是这样的 应用、系统、用户指南

                  在所有文件夹附近创建一个文件夹名称 assets,然后在此 assets 文件夹中创建 css 和 javascript 和 images 文件夹 把你所有的css js放在文件夹中

                  现在转到 header.php 并像这样调用 css。

                  <link rel="stylesheet" href="<?php echo base_url();?>assets/css/touchTouch.css">
                    <link rel="stylesheet" href="<?php echo base_url();?>assets/css/style.css">
                    <link rel="stylesheet" href="<?php echo base_url();?>assets/css/camera.css"> 
                  

                  【讨论】:

                    【解决方案13】:

                    我只是想补充一点,问题可能更简单-

                    我一直在为这个问题挠头好几个小时 - 我已经阅读了所有解决方案,但没有任何效果。然后我设法检查了实际的文件名。

                    我有“image.jpg.jpg”而不是“image.jpg”。

                    如果您使用$ ls public/..path to image assets../,您可以快速查看文件名。

                    听起来很愚蠢,但考虑到这里的所有技术建议,我从没想过看文件名这么简单的东西。

                    【讨论】:

                      【解决方案14】:

                      link_tag() 助手显然是执行此操作的方法。将您的 css 放在它通常所属的位置,在 site_root/css/ 中,然后使用帮助器:

                      来自The CodeIgniter docs...

                      echo link_tag('css/mystyles.css');
                      

                      输出

                      <link href="http://example.com/css/mystyles.css" rel="stylesheet" type="text/css" />
                      

                      【讨论】:

                        猜你喜欢
                        • 1970-01-01
                        • 2011-11-28
                        • 1970-01-01
                        • 2011-11-23
                        • 2013-08-06
                        • 1970-01-01
                        • 2016-03-06
                        • 1970-01-01
                        • 1970-01-01
                        相关资源
                        最近更新 更多