2010-03-01 78 views
1

比如我有網站http://localhost/site 在IIS我設置404錯誤導致重定向到Default.aspx的 如果我鍵入類似http://localhost/site/nodirectory,(有沒有這樣的文件夾)中的所有工作完全。路徑CSS和圖像

但是,如果我只在結束http://localhost/site/nodirectory/添加slah,網頁無法顯示的CSS和圖像。

圖像和css位於它們自己的文件夾中。我嘗試了不同的路徑:「gfx/logo.gif」,「/gfx/logo.gif」

有沒有人有關於此的一些想法?

回答

4

如果你的CSS和圖像是相對路徑,說ResolveClientUrl("~/gfx/logo.gif")此呈現給客戶端src="gfx/logo.gif",其中以斜線瀏覽器認爲是/nodirectory/gfx/logo.gif,而不是隻/gfx/logo.gif

要解決此問題,不要使用.ResolveClientUrl(),使用.ResolveUrl(),這將使SRC渲染src="/gfx/logo.gif"/使它最終,它是從域的根目錄路徑。

如果您自己開始以../gfx/開頭的路徑,您會看到相同的hebavior ...使它們相對於應用程序基礎,因此不存在混淆的可能性。

0

有幾個選項...

1)

在HTML頁面中,使路徑CSS和相對腳本...

"/scripts/myscript.js" 

凡腳本文件夾是根文件夾後的第一個文件夾

2)

您可以基本標記添加到您的網頁,這意味着所有的頁面資源將作爲相對於您指定的根位置進行治療......

<base href="http://www.mysite.com"> 

更多關於這兩個選項。

如果可以的話,選項1可能會更清潔一些。您明確知道您正在影響的資源。使用基本標記會影響頁面上的所有相對路徑。圖片,鏈接,腳本,CSS等。如果開發404頁面,假設它位於根文件夾中,但第二個選項效果最好,但實際上它可以從任何不存在的目錄中引用。您只需將您的根地址放在基本標記中,它就會像您期望的那樣運行。

使用任一選項,圖像可以相對於您的CSS文件的位置。