【问题标题】:Symfony2 is trying to feed my /css/* paths through routing but I don't want it toSymfony2 正在尝试通过路由提供我的 /css/* 路径,但我不希望它这样做
【发布时间】:2012-05-01 12:09:09
【问题描述】:

如果我转到这个 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>

【问题讨论】:

  • 如果您使用的是 Apache,请粘贴您的 web/.htaccess 文件;如果您使用的是 nginx,请粘贴您的虚拟主机配置。同时粘贴您的security.yml 文件。

标签: routing symfony


【解决方案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$

它会为你重写这种路径。

【讨论】:

  • 我尝试了您建议的两种方法。第二个似乎不起作用,但第一个起作用了。
猜你喜欢
  • 2016-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多