Codeigniter资产文件夹的最佳实践

Mig*_*ens 21 php codeigniter

我对codeigniter相当新,但我学得很好,我要添加一个css,images,js,...文件夹,但我不知道在哪里放它

有人告诉我要制作一个"公共"文件夹

system
application
public
    css
    images
Run Code Online (Sandbox Code Playgroud)

然后在你的index.php(在公共文件夹中)进行相应的调整

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

但当我这样做时,我得到一个404(不是ci 404,但是真的没有找到)

任何人都知道我可能做错了什么?谢谢!

mae*_*ulj 53

我有这个设置:

application
assets
system
.htaccess
Run Code Online (Sandbox Code Playgroud)

在"assets"文件夹中我有"img"或"js"等子文件夹.我还使用"实用程序助手"来帮助我指向该文件夹.

如果你想尝试一下,你必须先用这段代码创建一个名为"utility_helper.php"的帮助器:

     <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

     if ( ! function_exists('asset_url()'))
     {
       function asset_url()
       {
          return base_url().'assets/';
       }
     }
Run Code Online (Sandbox Code Playgroud)

并将其存储在

     application/helpers/
Run Code Online (Sandbox Code Playgroud)

然后你必须自动加载那个助手,你去:

  application/config/autoload.php
Run Code Online (Sandbox Code Playgroud)

并自动加载帮助器(例如:)

  $autoload['helper'] = array('form', 'url', 'utility');
Run Code Online (Sandbox Code Playgroud)

你还要路由到那个文件夹('application/config/routes.php')

       $route['assets/(:any)'] = 'assets/$1';
Run Code Online (Sandbox Code Playgroud)

并拥有包含此内容的.htaccess文件:

    RewriteEngine on
    RewriteCond $1 !^(index\.php|images|assets|robots\.txt)
    RewriteRule ^(.*)$ /index.php/$1 [L]
Run Code Online (Sandbox Code Playgroud)

现在您可以简单地包含外部脚本,css示例:

   <link rel="stylesheet" type="text/css" href="<?php echo asset_url();?>css/style.css">
Run Code Online (Sandbox Code Playgroud)

其中css是资产中的文件夹,style.css是css文件.像这样:

   application
   assets
          css
              style.css
   system
Run Code Online (Sandbox Code Playgroud)

  • 那么我编码的地方我们往往不会写回声这么多,因为你可能想要附加函数结果或类似的东西......你可以写回声甚至使用短标记(<?=?>,如果这样的话对你来说是新手,谷歌吧:) (3认同)
  • 如果.htaccess文件以它的方式工作,允许在codeigniter系统之外访问像/ images这样的URL,那么为什么不把资源放在那里并跳过帮助器呢? (2认同)

car*_*lot 10

另一个角度 - 我认为他们试图告诉你要做的 - 是将你的应用程序和系统文件夹从"public"html文件夹中提升一级.这样你的源文件就无法访问.就像在Mamp中一样,公用文件夹被称为htdocs,在大多数web托管中称为html.

 /application/html/
 /system     /html/

 // your main index page is in the public html folder
 /.…..       /html/index.php 

 // an assets folder in the public html folder with css, img, etc folders
 /.……        /html/assets/css/
 /.……        /html/assets/img/
Run Code Online (Sandbox Code Playgroud)

然后在你的index.php中,路径向上一级"up"就像

$system_path = '../system';
$application_folder = '../application';
Run Code Online (Sandbox Code Playgroud)

奖金 - 这里有两个技巧对我有很大帮助.1)命名您的应用程序文件夹,然后您可以轻松地在不同版本之间切换,"快速回滚"等.

 /app_alpha/html/
 /app_beta01/html/
 /app_beta02/html/
Run Code Online (Sandbox Code Playgroud)

2)将基本URL放在index.php页面上 - 而不是在配置中.

   $assign_to_config['base_url'] = 'https://awesomedomain.com'; 
Run Code Online (Sandbox Code Playgroud)

这样你可以有一个本地开发版本,单独的实时服务器版本 - 你永远不必担心编写基本URL,因为它在index.php页面上 - 而不是在配置中.