2016-12-16 55 views
1

我缺乏IIS和IIS管理器的專業知識,甚至沒有適當的谷歌條款,所以我希望你會記住,如果你試圖點擊downvote按鈕。IIS路徑忽略應用程序文件夾

謝謝。

好吧,所以我有一個角度的應用程序,我沒有使用IIS在本地開發它後轉移到IIS服務器。

基於IIS的應用程序的副本工作,因爲它將按預期的方式服務index.html。不幸的是,外部文件(.ccs,.js等)的鏈接全部被破壞。

申請住此文件夾中:

\\iis.dev.local\c$\inetpub\wwwroot\the-application 

而且它的.css文件住在這裏:

\\iis.dev.local\c$\inetpub\wwwroot\the-application\css\main.css 

按照最初寫入時,鏈接到該.css文件,我們稱之爲「鏈接1「:

<link rel="stylesheet" href="/css/main.css"> 

哪些在開發中工作正常,但在IIS上不起作用。

然而,這確實工作,我們稱之爲「鏈接2」:我是如何添加應用程序本身坐落在文件夾

<link rel="stylesheet" href="/the-application/css/main.css"> 

看到了嗎?這很奇怪,因爲相對於index.html,「鏈接1」應該是正確的 - 但事實並非如此。

我該如何說服我的應用程序,它的基礎URL應該是它所在的文件夾,而不是上面的一個級別?

隨機部分猜測和/或有用的信息?

1)應用程序位於默認應用程序池中。

2)東西,東西web.config

編輯:搞砸了一些路徑。

回答

0

嘗試使用<base> HTML元素來設置根。

https://www.tutorialspoint.com/html/html_base_tag.htm

在您的例子那就是:

<base href="https://www.the-application.com" /> 

然後剩下的應該流,以相對路徑。

+0

似乎沒有。我試過'',''以及這些方面的一些變化,但鏈接仍然被打破。 – crowhill

0

在本地機器上開發時,很可能在DEFAULT網站下的虛擬文件夾下運行。

當您移動到服務器時,您現在正在網站的根目錄下運行。

選項:

  1. 在IIS的根目錄中創建您的dev的機器一個新的站點。然後使用此路徑來測試您的網站。遷移到生產時,路徑將相同。

  2. 用正確的路徑創建一個變量,如果運行LOCALHOST(在url中)使用一個路徑,否則使用另一個路徑。使用JavaScript將鏈接添加到您的HTML(我爲Cordova開發使用IIS下的JavaScript網站所做的一切)。

  3. 將您的頁面擴展名從.html更改爲.aspx (是的,我知道誰想要這樣做......)然後按如下方式更改您的鏈接。 (我不得不刪除起始<和結束/>在下面的代碼,就不會在後格式化)

鏈路的rel =「樣式表」類型=「文本/ CSS的」 href =」 <%=「ResolveUrl」(「〜/ css/main.css」)%>「

當你以後瀏覽你的源時,你會看到...(或者當你瀏覽到子頁面時,它會把正確的相對路徑代替你)

<link rel="Stylesheet" type="text/css" href="css/main.css"/>