2012-05-01 16 views
1

如果我去這個URI的Symfony2正試圖通過路由來養活我的/ CSS/*路徑,但我不希望它

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

它給了我,CSS文件,這正是我所期望的,但如果我去這個URI,

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

我得到這個錯誤:

No route found for "GET /css/images/ui-icons_222222_256x240.png"

好像必須有辦法告訴Symfony的,不要試圖ŧ o通過/css/*路徑進行路由。 (我知道該文件存在。)我該怎麼做?

編輯:這是我的.htaccess文件:

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

如果您使用的是Apache,請粘貼您的'web/.htaccess'文件;如果您使用的是nginx,請粘貼您的vhost配置。同時粘貼你的'security.yml'文件。 –

回答

1

我不知道這是否正是你的情況,但想象中的目錄結構:

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

style.css,只要你引用您的圖片使用相對路徑,如url(../images/foo.png),所以如果您將style.css移動到另一個目錄中,它將無法正常工作。

您正在使用Assetic渲染您的CSS文件,以便將此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$ 

它會照顧爲你的改寫這種路徑。

+0

我嘗試了你建議的兩種方法。第二個似乎沒有工作,但第一個做到了。 –

+0

這些方法都不適用於Symfony 2.3 – canadiancreed

相關問題