2015-09-19 89 views
2

我與express.js瞎搞,並建立了一些基本的功能,但我用從錯誤的地方服務,如果URL是從根長於一個目錄快速靜態問題。看下面的例子。快速靜態服務走錯了路

我正在使用正常記錄的方法來使用靜態。

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

並且建立了幾條路線。例如。

app.get('/signup', function(req, res) { 
    res.render('signup.ejs'); 
}); 

404鏈接在鏈尾。

app.get('*', function(req, res){ 
    res.status(404).render('404'); 
}); 

如果我打的網頁,例如localhost:3000或定義路線localhost:3000/login,一切都很好。即使我點擊了一條未定義的路線localhost:3000/foo,我也可以正確顯示所有圖像。

但是如果我去一個進一步做類似localhost:3000/login/foo所有圖像都失蹤,我會在下面的地址瀏覽器控制檯錯誤。

http://localhost:3000/login/img/site-brand.png

出現這種情況就太有多個目錄定義的路由相同。

我解釋快遞網站上的文檔,不管發生了什麼叫靜態圖象會從根公共目錄,其中包含一個JS,IMG和CSS目錄提供服務的。

我的問題是,我誤解了什麼?我怎樣才能表達總是相對於根?

回答

3

我寫的整個問題,然後意識到,當我在.ejs文件已經成立了src=""標籤我曾使用相對路徑,不是絕對的。我並沒有刪除這個問題,而是決定回答它並將它發佈給其他人。

因此,而不是使用src="img/my-image.png"它應該是src="/img/my-image.png"前導斜槓表示請求是相對於根而不是請求的路徑。

基本web開發的東西那裏。我應該第一次看到它,但它遲到了,我正在充滿新的框架,這反過來又把我的小腦子裏的更瑣碎的東西擠掉了。