2015-10-02 109 views
1

问题描述:笨3 - 缺少css文件

,当我浏览到我的web应用程序的某些页面中,CSS文件没有被加载/发现的。我得到404没有发现错误,我不明白为什么。这一定很简单,我没有看到。

具体来说,当我导航到默认页面时,它工作(下面调用index()方法),但是当我尝试运行getallswitches()页面时,没有加载任何css文件。

代码

我有以下CI控制器:

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

class Objects extends CI_Controller { 

     public function __construct() 
     { 
       parent::__construct(); 
       $this->load->model('objects_model'); 
     } 

     public function index() 
     { 
       $data['main_content'] = 'default'; 
       $this->load->view('includes/template',$data); 
     } 

     public function getallswitches() 
     { 
       $switches= $this->objects_model->get_all_switches(); 
       $data['switches']= json_encode($switches); 
       $data['main_content'] = 'switches'; 
       $this->load->view('includes/template',$data); 
     } 
} 

我使用一个模板系统来加载自己的看法。模板文件看起来是这样的:

<?php 
     $this->load->view('includes/header'); 
     $this->load->view($main_content); 
     $this->load->view('includes/footer'); 
?> 

在我的header.php文件,我有逻辑添加CSS文件,像这样:

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
    <meta charset="utf-8"> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 

    <meta name="description" content=""> 
    <meta name="author" content=""> 
    <link rel="icon" href="../../favicon.ico"> 
    <title>test app</title> 
    <link href="../application/assets/css/bootstrap.min.css" rel="stylesheet"> 
    <link href="../application/assets/css/justified-nav.css" rel="stylesheet"> 
    <link href="../application/assets/css/dashboard.css" rel="stylesheet"> 
    <script src="../application/assets/js/ie-emulation-modes-warning.js"></script> 
    </head> 

什么我可能会搞乱任何提示吗? 我一直在看这太久。

编辑1

这就是URL看起来它失败时,如:

http://localhost/testapp/index.php/application/assets/css/bootstrap.min.css

而当它的工作原理:

http://localhost/testapp/application/assets/css/bootstrap.min.css

+0

使用浏览器控制台还检查DOM。比较一个页面加载一个CSS文件的URL与另一个页面看到的URL。 – Sparky

+0

Sparky,请参阅我的编辑1 – dot

回答

1

使用绝对路径你的资源。

<link href="/application/assets/css/bootstrap.min.css" rel="stylesheet">

或利用BASE_URL()函数:

<link href="<?=base_url();?>application/assets/css/bootstrap.min.css" rel="stylesheet">

但一般:

不要把你的资产注入应用程序文件夹。更好地将资产文件夹放在应用程序的根目录中,或者更好地将公共应用程序和系统文件夹分开,将资源移动到公用文件夹。 https://stackoverflow.com/a/32346618/5173560

+1

是的,**将资产移动到PUBLIC文件夹**。 – Sparky

0

这可能是你的根目录的.htaccess文件的一些问题。

将这个代码在你的.htaccess

Options +FollowSymLinks 
RewriteEngine on 
RewriteCond $1 !^(index\.php|(.*)\.swf|forums|images|css|downloads|jquery|js|robots\.txt|favicon\.ico) 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ ./index.php?$1 [L,QSA]