未提供资产文件

时间:2015-02-18 09:40:15

标签: symfony nginx assetic

我正在使用Symfony 2.5.9,dev env,

assetic:
    use_controller: true

尝试将资产用于我的资源

{% javascripts '@MeMyBundle/Resources/public/js/my-script.js' %}
    <script src="{{ asset_url }}"></script>
{% endjavascripts %}

我正在获取生成的链接

<script src="/js/60f6e00_my-script_1.js"></script>

但是NginX抱怨它不存在

  

404未找到
  nginx的

nginx似乎甚至没有将请求转发给SF


这是我用于nginx的配置

root  /data/www/symfony/web;

location / {
    try_files $uri @pass_to_symfony_dev;
}

location ~ /app_dev.php/ {
    try_files $uri @pass_to_symfony_dev;
}

location @pass_to_symfony {
    rewrite ^ /app.php?$request_uri last;
}

location @pass_to_symfony_dev {
    rewrite ^ /app_dev.php?$request_uri last;
}

location ~ ^/app(_dev)?\.php($|/) {
    include fastcgi_params;
}

我不知道这是NginX问题还是SF问题。

所以问题是:为什么NginX会给我发送404?

2 个答案:

答案 0 :(得分:0)

尝试遵循http://symfony.com/doc/current/cookbook/configuration/web_server_configuration.html#nginx中的规则。您生成的网址为SERVER_NAME/app_dev.php REQUEST_URI而不是SERVER_NAME/app_dev.php/REQUEST_URI,但您的上一条规则仅适用于提供app_dev.phpapp_dev.php/的情况。

答案 1 :(得分:0)

我有同样的问题,放弃并做了以下事情:

{% set serverName = app.request.server.get('SERVER_NAME') %}
{% set serverPort = app.request.server.get('SERVER_PORT') %}
{% set serverAddress = serverName ~ ':' ~ serverPort %}
<link href="http://{{ serverAddress }}/css/app.css" rel="stylesheet">

Coupld可能也把协议放在那里,我不需要。