2016-10-28 87 views
1

這裏是我們的網站結構在生產環境中翻譯的CSS背景圖像路徑不同?

main application 
    sub application (index file using css is located here) 
     content 
     assets 
      css (CSS file located here) 
      images (image located here) 

在CSS文件中,我們使用的是bacground圖像與相對URL是這樣的:

background: #ffffff url("../images/bodybg.png") repeat; 

所以它告訴CSS來發現圖像上一級的圖像文件夾

這適用於我們的本地機器與IIS。這被翻譯成:

http://localhost/subapplication/content/assets/images/bodybg.png 

然而,在我們的生產環境也對IIS這被翻譯成:

https://www.oursite.com/images/bodybg.png 

我試圖改變到根相對路徑:

background: #ffffff url("/subapplication/content/assets/images/bodybg.png") repeat; 

這個固定這個問題,但有誰知道爲什麼相對的CSS路徑有兩個環境中的兩個結果?

+0

是否從該位置實際加載了CSS文件? (你可以在Chrome開發者工具中查看css url) – H77

+0

好點。看起來,我們在ASP.NET MVC 5中使用綁定的方式導致了這種情況。我會用答案更新問題。 – Kenneth

回答

0

看來,我們在ASP.NET MVC 5中使用綁定的方式導致了這種情況。

在它是這樣寫的生產指標的文件:

@Styles.Render("~/Content/main") 

而在bundleconfig:

bundles 
    .Add(new StyleBundle("~/Content/main") 
        .Include("~/Content/assets/css/main.css", 

其轉化爲在代碼索引文件使用根相對路徑:

/subapplication/Content/main?v=12341234lmkelmk 

我需要將該包渲染到實際CSS所在的位置,以使相對路徑k,像這樣:

@Styles.Render("~/Content/main/assets/css/main") 

bundles 
     .Add(new StyleBundle("~/Content/main/assets/css/main") 
         .Include("~/Content/assets/css/main.css", 
0

因爲它是相對於環境。 你可能有一些子域/虛擬目錄也是搞亂了相對論。

+0

澄清。該網站的結構(文件夾,虛擬目錄)是相同的,在這種情況下沒有子域的使用。但你是正確的,這裏正在搞亂相關性。 – Kenneth