Yii2:/assets/1ecfb338/css/bootstrap.css只是加载页面,而不是css

时间:2015-12-11 22:55:41

标签: nginx yii2

我遇到了Yii2的问题,因为它不会加载bootstrap.css文件。事实上它并没有被创造出来。当我尝试加载http://frontend.local/assets/1ecfb338/css/bootstrap.css时,它只加载Yii首页,而不是css文件。

为什么会这样?可能是我的Nginx配置吗?

server {
set $yii_bootstrap "index.php";
listen    80;

server_name frontend.local;

root /var/www/frontend/web;
index $yii_bootstrap;

access_log  /var/log/nginx/access.log;
error_log   /var/log/nginx/error.log info;


location / {
    try_files $uri $uri/ /$yii_bootstrap?$args;
}

location ~ \.php$ {

    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi_params;
}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.(ht|svn|git|sql) {
    deny all;
}

sendfile off;
}

这是在Linux VM中运行。

2 个答案:

答案 0 :(得分:0)

该文件不存在。无论文件时间如何,只要文件不存在,您的try_files指令就会指示nginx提供/$yii_bootstrap

如果您为静态资源文件添加特定位置,您将能够发送到期日期(这是一种常见策略),同时将其从文件try_files测试中删除。

尝试将此添加到server块:

location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
    expires 24h;
#   log_not_found off;
}

答案 1 :(得分:0)

当url请求涉及相关资源时,assest目录会以dinamically方式创建。

您可以尝试删除(删除)与boostrap相关的目录内容,并查看在您访问前端(或您的webApp)网址时发生的情况

确保您的布局包含(for frontend):

use frontend\assets\AppAsset;


AppAsset::register($this);

并且您的frontend/assets/AppAsset.php至少包含对bootstrap的引用(高级模板的yii默认值)

<?php
/**
 * @link http://www.yiiframework.com/
 * @copyright Copyright (c) 2008 Yii Software LLC
 * @license http://www.yiiframework.com/license/
 */

namespace frontend\assets;

use yii\web\AssetBundle;

/**
* @author Qiang Xue <qiang.xue@gmail.com>
* @since 2.0
*/
class AppAsset extends AssetBundle
{
  public $basePath = '@webroot';
  public $baseUrl = '@web';
  public $css = [
    'css/site.css',
  ];
  public $js = [
  ];
  public $depends = [
    'yii\web\YiiAsset',
    'yii\bootstrap\BootstrapAsset',
  ];
}

并且显然你有一个正确的yii \ bootstrap \ BootstrapAssest内容