我遇到了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中运行。
答案 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内容