需要帮助访问Code Igniter 3

时间:2017-12-08 09:23:44

标签: php .htaccess assets codeigniter-3

我正在使用Code Igniter 3.我将所有资产文件保存在根文件夹中,就像我通常那样。但是,我需要将所有文件移到另一个文件夹中,让我解释一下:

之前

  

user.php位于:%root%\ application \ views \

     

admin-panel.php位于:%root%\ application \ views \

     

资产位于:%root%\ assets

立即

  

user.php文件位于文件夹中:%root%\ application \ views \ usr \

     

admin-panel.php位于:%root%\ application \ views \ adm

     

资产位于:%root%\ assets

我知道只需将assets/anything.extension更改为../assets/anything.extension

即可访问adm或usr文件夹中的资产文件

或者通过复制粘贴两个目录中的assets文件夹(我不想这样做)

但是,我已经完成了设计并且这样做非常耗时,所以我想知道是否有任何其他方法可以让adm或usr中的文件通过使用{{{}来访问资产中的文件1}}或route.php某事?

2 个答案:

答案 0 :(得分:0)

您需要在base path中添加assets pathconfig file

我提供了一些configuration。请按照以下步骤操作

转到 application\config\config.php

添加以下代码(配置base urlassets path

$config['base_url'] = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on") ? "https" : "http");
$config['base_url'] .= "://".$_SERVER['HTTP_HOST'];
$config['base_url'] .= str_replace(basename($_SERVER['SCRIPT_NAME']),"",$_SERVER['SCRIPT_NAME']);

define('ASSET_PATH',$config['base_url'].'assets/');

最后你可以在像这样的链接中使用

<a href="<?php echo base_url('index.php/yourController/yourFunction'); ?>">Any Link</a>
资产的

(例如img

<img src="<?php echo base_url(); ?>assets/img/logo.png" alt="">

您可以获得jscss这样的文件

<link href="<?php echo ASSET_PATH; ?>css/bootstrap.min.css" rel="stylesheet">

<script src="<?php echo ASSET_PATH; ?>js/jquery.min.js"></script>

答案 1 :(得分:0)

因为您的资源文件夹与index.php在同一文件夹中,所以路径必须是&#34; relative&#34;到......你可以通过

之类的东西逃脱
<img src="/assets/img/logo.png" alt="">

使用HTACCESS 现在我必须声明,对于htaccess来说,我只是危险。

尝试将资产重定向到/ assets似乎在我的服务器上搞砸了。我发现如果你将资产文件夹重命名为资产甚至移动它,这似乎有效。所以不确定这可能有什么副作用,但它似乎在我的测试网站上播放正常。

<强>的.htaccess

RewriteEngine On

# Note - the system assets folder has been renamed to asset
# to make it different. It doesn't like them being the same
# with this implementation. Especially if we match on /assets or assets.

RewriteRule ^/?assets/?$ /asset/$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

^ /?assets /?$ 中的 /?以防万一你有一个领先/然后强制将文件夹从资产重命名为资产。否则它会在循环中追逐它的尾巴......

有更好的方法可以做到这一点,聪明的人会知道,所以它是一个可能的解决方案,但我并没有声称它是最好的,甚至技术上都不正确。

如果您使用它,请测试它的填充物。

我的测试设置。

根文件夹中的

.htaccess文件

控制器名为 User.php

class User extends CI_Controller {

    public function __construct() {
        parent::__construct();
    }

    public function index() {
        $this->load->view('usr/user_view');
    }
}

名为 user_view.php 的视图位于 application / views / usr 下并包含...

<h1>This is the User View</h1>
<img src="assets/images/alien-icon.jpg" width="300" height="300" alt="">

图片位于 / asset / images / 注意:资产不是资产

所以对资产/东西的任何引用......都被重定向到资产/....