1

如果我去这个 URI

/app_dev.php/css/eabd201_jquery.ui.theme_15.css

它给了我那个 CSS 文件,这是我所期望的,但是如果我去这个 URI,

/app_dev.php/css/images/ui-icons_222222_256x240.png

我收到此错误:

找不到“GET /css/images/ui-icons_222222_256x240.png”的路线

似乎必须有一种方法告诉 Symfony 不要尝试通过路由来寻找/css/*路径。(我知道该文件存在。)我该怎么做?

编辑:这是我的.htaccess文件:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^(.*)$ app.php [QSA,L]
</IfModule>
4

1 回答 1

1

我不知道这是否正是你的情况,但想象一下目录结构:

├── css
│   ├── style.css
├── images
│   ├── foo.png

style.css中,只要您使用相对路径引用图像,因此如果您移动到另一个目录url(../images/foo.png),它将无法工作。style.css

您正在使用 Assetic 渲染您的 CSS 文件,因此assetic 将此 CSS 文件“移动”到/app_dev.php/css实际上并不存在并由app_dev.php控制器处理的目录中。所以现在,图像的相对路径并不指向图像,但/app_dev.php/images/foo.png它也不真正存在并且由app_dev.php控制器处理。

希望这是一个非常普遍的问题,并且有一个内置的解决方案:cssrewrite过滤器。

您可以将其添加到您的{% stylesheet %}标签中:

# app/config/config.yml
assetic:
    # ...
    filters:
        cssrewrite: ~

{# your template #}

{% stylesheet 'bundles/foo/css/style.css' filter='cssrewrite' %}

或者将其应用于每个 CSS 文件:

# app/config/config.yml
assetic:
    # ...
    filters:
        cssrwrite:
            apply_to: \.css$

它将负责为您重写这种路径。

于 2012-05-01T13:10:42.437 回答