我有一個較舊的Express 2.5.9應用程序,我將其與Express 3.4.x進行了最新的更新。在生產中,應用程序被Apache使用重寫規則代理:Express 3,Apache代理和basepath
RewriteRule ^/path/to/app/(.*)$ http://nodeserver.domain.com:3000/$1 [P,L]
RewriteRule ^/path/to/app$ /path/to/app/ [R,L]
因此,在生產,http://domain.com/path/to/app/foo
被代理到http://nodeserver.domain.com:3000/foo
和Express正常處理/富路線。
在快遞2.x中,我用了basepath
設置,以便重定向是在生產(如處理不當,如果我需要重定向到/login
,該basepath
設置,設置爲/path/to/app
實際上會重定向到/path/to/app/login
。basepath
沒有設置在發展(如訪問在http://localhost:3000
應用程序)。
basepath
已經快3被去除,使得設置不再起作用,也不做我的重定向(例如,如果我去http://domain.com/path/to/app/admin
,這條路有中間件重定向到/login
,最終被重定向到http://domain.com/login
)。
我可以從
res.redirect('/login')
重新寫我重定向到
var redirectUrl = config.basepath ? config.basepath + '/login' : '/login'
res.redirect(redirectUrl)
,但似乎不雅。
我已經考慮過安裝方法,但對於這種情況似乎有點矯枉過正。