2010-07-15 105 views
5

我目前正在開發一個網站,我這是在與IIS 5.1的XP盒託管我的本地環境。我正在使用ASP MVC2和.NET Framework 4.0。配置路徑在CSS圖片用於開發和生產環境

我想知道的是,如果有一種方式來在web.config(或任何其他方式)「配置」我的所有圖像的路徑,以便當我的CSS使用url()時,它會自動知道去哪裏看對於。

背後的主要原因是我們有很多圖片和文檔,我們不想將它們存儲在我們的源代碼控制中,因爲它與內容編寫者之間的差異很大,因此與它們無關。

爲他們編輯,審閱和部署他們自己的文檔提供開發和生產空間對於生產力也是一個巨大的好處,並且我希望儘可能保持這一點,因爲我們有一種機制來驗證所有鏈接的文件在我們的網站是有效的。

因此,舉例來說,在我的dev的盒子,我想用「http://static.devserver/Images/ ......」但在部署的時候,我想他們使用「http://static.productionserver/Images/ ......」

顯然,考慮到我的要求上面,在這個場景中託管靜態子域的CSS不會工作,或者我錯過了什麼?

我被告知要使用mod_rewrite和/或htaccess,但我沒有很好的記錄本上,似乎對我現在所擁有的,提供該項目的時間相當複雜。

所有的一切,我希望你們在那裏與您分享我描述它上面我能得到這個工作,你的想法和建議。

非常感謝您的閱讀!

回答

0

有沒有簡單的解決方案做的正是你想要的。 您可能需要輸出.css文件作爲動態頁面,在每個URL之前替換一個字符串(在CSS中)。

您是否真的需要一個子域名?爲什麼不使用子文件夾?url('/ css/yourcss的CSS)是普遍的兩種開發和生產。

(好吧,我知道有與餅乾額外的交通問題,不過,這是WAAAY容易做到)

+0

我的問題是,我不希望內容成爲主機應用程序的一部分。 內容 「應該」 在它自己的域名託管: 用於開發: 應用=> www.MyApp.dev(駐留在服務器A) 內容=> www.static.MyApp.dev(駐留在服務器B) 對於生產: 應用=> www.MyApp.com(駐留在服務器C) 含量=> www.static.MyApp.com(駐留在服務器d) 也許我過於複雜一切,但這些都是我的要求... – 2010-07-15 13:18:29

+0

哦,我的答案看起來很醜!對不起,格式化... – 2010-07-15 13:19:47

0

BarMonster的相對路徑是這樣的去該URL(「/子文件夾/ yourfile.ext」),這是做網站內的圖片,大多數鏈接能夠測試和現場環境之間進行轉換的最佳途徑。

+0

是的,我明白,但是,在這種情況下,內容是在相同的物理位置CSS文件... 我的要求是,該網站必須部署到Web服務器A,但內容駐留在託管靜態內容的Web服務器上的服務器B上。 現在唯一的方法是在服務器B上託管CSS文件,以便圖像或任何其他內容將與css文件相關,但這不是一個解決方案,因爲我必須單獨部署我的css文件並將它們移出對於源代碼管理也會造成一些痛苦... – 2010-07-15 13:30:32

0

非常感謝很多人試圖幫助我! 我終於再次在url重寫中尋找解決方案來解決我的問題! 我需要「重定向」而不是「重寫」URL!

現在按預期工作!

我使用Intelligencia的URL重寫這個簡單的規則:

<rewriter> 
     <redirect url="^.+\.(?:jpg|bmp|png|gif)$" to="http://myDEVserver$0" processing="stop" /> 
</rewriter> 
+0

對不起,讓你失望,但這太糟糕了:-) 對任何靜態文件的每個請求都會在你的應用服務器上產生額外的請求。這很慢。 唯一正確的解決方案是在CSS文件中放置最終的URL。這可能是動態完成的,或者是靜態使用一些模板工具。 – BarsMonster 2010-07-15 22:23:00

+0

那麼,你有沒有動態或靜態的指針呢? – 2010-07-16 21:12:41

0

我意識到這個問題,就跟着去了前段時間感冒,但它是我在谷歌搜索的第一個結果,所以我想我會如果有幫助他人的話,可以試一試。

我對這個問題的解決方案是將我的CSS文件中包含url()語句的所有規則移到我的View中。

我在MVC 3中使用Razor,所以我在我的基礎佈局文件中包含一個樣式節,並將所有麻煩的url規則放在那裏。然後我可以使用MVC引擎在運行時確定合適的URL。你可以修改它來動態查看不同的域。

<style type="text/css"> 
    .back 
    { 
     background: url(@Url.Content("~/Content/icons/gray/back.png")) no-repeat; 
    } 
    .link 
    { 
     background: url(@Url.Content("~/Content/icons/gray/link.png")) no-repeat; 
    } 
</style> 

語法是針對Razor引擎的,但對於MVC 2,您可以在您的母版頁中執行相同的操作。