我正在編寫一個單頁網頁應用程序的網站(網站的其餘部分只是提供的靜態文件)。我正在嘗試編寫一箇中間件以便將所有請求按照模式'example.com/app'重定向到'example.com/app',以便請求諸如'example.com/app/my/specific/頁面'將全部導致發送相同的頁面。關鍵問題在於,瀏覽器地址欄中的網址不能更改,以便JavaScript應用本身可以解釋它並顯示正確的內容。如何重定向到快速單頁Web應用程序中的節點
我可以做這樣的事情:
app.use('/app', function (req, res) {
res.redirect('/app');
});
然而,這會導致頁面的URL來改變和一個單獨的HTTP請求assumedly製成。
最明顯的替代解決方案是做這樣的事情:
app.use('/app', function (req, res) {
res.sendfile(__dirname + '/public/app/index.html');
});
這裏的問題是,從頁面資源,如「example.com/app/my/specific/page/」將請求後看在錯誤的位置。例如,如果我在頁面上有圖像,那麼它會查找example.com/app/my/specific/page/image.jpg。由於沒有圖像返回,它不會顯示在頁面上。這發生在所有外部腳本或樣式表中。
我也嘗試過這樣的事情:
app.use('/app', function (req, res) {
res.sendfile(__dirname + '/public/beta' + url.parse(req.url).pathname);
});
但是這是非常愚蠢的我的原因很明顯。
這是可能的嗎?我想我可以發回一段數據(可能在查詢字符串中)被應用程序用來更新網址 –