在 CodeIgniter 中将资源(css/图像)放在哪里? [复制]

Posted

技术标签:

【中文标题】在 CodeIgniter 中将资源(css/图像)放在哪里? [复制]【英文标题】:Where to put resources (css/images) in CodeIgniter? [duplicate] 【发布时间】:2011-11-28 18:28:21 【问题描述】:

我正在使用 CI 进行一些测试,并让它在一个文件夹中运行。以http://www.example.com/sub-folder/ 为例

我的目录结构是这样的(其中/是子文件夹/): / |-/系统 |-/应用程序

我有 Eclipse 作为我的 IDE,有 2 个项目,1 个用于系统,1 个用于应用程序,其中应用程序是我的项目,其中包含对系统的引用。

我的 .htaccess 文件阻止访问系统目录。我想将我的图像和 CSS 分别放入:application/resources/images 和 application/resources/css。我希望能够使用<link rel="stylesheet" href="/sub-folder/css/style.css" /> 但是,经过一段时间的测试和搜索,我无法从应用程序目录中加载 CSS 文件。

我需要在 .htaccess 中更改或添加什么才能执行此操作?

我的 .htaccess 的内容如下:

<IfModule mod_rewrite.c> RewriteEngine On RewriteBase /

### Canonicalize codeigniter URLs

# If your default controller is something other than
# "welcome" you should probably change this
RewriteRule ^(welcome(/index)?|index(\.php)?)/?$ / [L,R=301]
RewriteRule ^(.*)/index/?$ $1 [L,R=301]

# Removes trailing slashes (prevents SEO duplicate content issues)
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^(.+)/$ $1 [L,R=301]

# Removes access to the system folder by users.
# Additionally this will allow you to create a System.php controller,
# previously this would not have been possible.
# 'system' can be replaced if you have renamed your system folder.
RewriteCond %REQUEST_URI ^system.*
RewriteRule ^(.*)$ /index.php/$1 [L]

# Checks to see if the user is attempting to access a valid file,
# such as an image or css document, if this isn't true it sends the
# request to index.php
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^(.*)$ index.php/$1 [L]

【问题讨论】:

【参考方案1】:

代替

<link rel="stylesheet" href="/sub-folder/css/style.css" />

你可以的

<link rel="stylesheet" href="<?php echo base_url('application/sub-folder/css/style.css'); ?>" />

我通常将资产保存在根文件夹(主 index.php 文件所在的位置)并使用 this asset library 加载所有内容。

如果您想将资产保存在 application/sub-folder 中,您可以这样做:

【讨论】:

感谢您的回答,但是如果我将资产放入根文件夹,那么它们将位于我的 Eclipse 项目之外,这是我想要避免的。我正在使用base_url('sub-folder/css/style.css'),但为了简单起见,我想我会显示/sub-folder/css/style.css base_url('sub-folder/css/style.css') 将在您的应用程序的根目录中查找 子文件夹。您需要使用base_url('application/sub-folder/css/style.css')。我相应地更新了我的答案。 我试过了,html 输出是:&lt;link rel="stylesheet" href="http://www.example.com/sub-folder/application/css/style.css" /&gt; 我的配置有问题吗? 它会翻转应用程序子文件夹吗?这很奇怪。您将 base_url 设置为什么?你试过用site_url() 代替base_url() 吗? 哦,我敢打赌这是您设置的 RewriteBase 的问题。将其设置为“/”将查看服务器的根目录。您可能需要将其设置为“/子文件夹”。【参考方案2】:

我这样设置我的 CI 项目:

应用程序(我的应用程序文件) 资产(可公开访问的 css、js 和图像等) 系统(codeigniter 核心)

通常,如果我在 CMS 中构建,我会将 CMS 资产放在应用程序文件夹中,因为它们基本上是私有的。

【讨论】:

以上是关于在 CodeIgniter 中将资源(css/图像)放在哪里? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Codeigniter CSS、JS 和图像未加载,可能假定为目录

我使用啥路径在codeigniter中调用背景图像

如何从 CodeIgniter `image_lib` 获取被操纵的图像作为资源?

如何在 Codeigniter 中加载图像?

codeigniter css 样式

在 Codeigniter 中使用外部 CSS 支持将 HTML 转换为 PDF