2017-04-22 83 views
0

我目前正在使用Node.js開發一個網站。 我剛剛設置了我的404頁面,並且在我去mywebsite.com/404或其他不存在的頁面或其他頁面時正常工作,但如果我嘗試訪問類似mywebsite.com/foo/bar(也不存在)之類的資源,那麼CSSJS不加載。在服務器上,我使用:Node.js靜態文件夾引用無法加載CSS

app.use('/assets', express.static(__dirname + '/public')); 

而且,在網頁上顯示:

<link href="/assets/css/bootstrap.min.css" rel="stylesheet"> 

我知道,在HTML中的資產前添加一個../將工作,但不是理想。任何幫助?

我的文件夾結構的東西如下:

Project Folder 
|-App.js 
|-views 
    |-404.ejs 
    |-home.ejs 
|-public 
    |-CSS 
    |-Bootstrap.min.css 
    |-js 
    |-img 
    |-font 
+0

你能告訴我們你的文件夾結構嗎?有找到你想要顯示的頁面嗎? – Teocci

+0

由於URL以'/'開始,因此您不應該獲得您描述的行爲。 – Quentin

+0

已更新帖子以包含文件結構。請注意,我查看了404頁面中的CSS,它正在請求'/ whatever/the/link/is/assets/css/boostrap.min.css' –

回答

0

使用base元的404頁(或每頁面!),並使用您指定的基本路徑,它會永遠要求你的資產。

例如,添加<base href="http://example.com" />之前你</head>標籤將要求每個資產http://example.com的路徑,以便在你的情況,而不是/foo/bar/assets/css/bootstrap.min.css,它將請求/assets/css/bootstrap.min.css

+2

基本元素用於解析相對URL,但是以斜槓開頭的URL不是相對的,它是絕對的。 OP的問題一定是別的。而且,基本元素應該添加到head元素中,而不是_before_。 –

+0

@PatrickHund我會試一試,是的,它應該在頭部(這是一個錯字)。 – 2017-04-22 12:24:18

+0

@zGeek雖然這已解決了問題,但我想在此診斷潛在的問題,因爲我相信這裏還有其他事情 –