问题描述:
当我导航到我的网络应用程序中的某些页面时,没有加载/找到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 :(得分: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 :(得分: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]