gpt4 book ai didi

node.js - Express 3、Apache 代理和基本路径

转载 作者:太空宇宙 更新时间:2023-11-04 01:09:13 25 4
gpt4 key购买 nike

我有一个较旧的 Express 2.5.9 应用程序,我正在将其更新为 Express 3.4.x。在生产中,应用程序由 Apache 使用 RewriteRule 进行代理:

RewriteRule ^/path/to/app/(.*)$ http://nodeserver.example.com:3000/$1 [P,L]
RewriteRule ^/path/to/app$ /path/to/app/ [R,L]

因此,在生产中,http://example.com/path/to/app/foo 被代理到 http://nodeserver.example.com:3000/foo,并且 Express 正常处理/foo 路由。

在 Express 2.x 中,我使用了 basepath 设置,以便在生产中正确处理重定向(例如,如果我需要重定向到 /login,设置为 /path/to/appbasepath 设置实际上会重定向到 /path/to/app/login。在开发中未设置 basepath(例如,在 访问应用程序) >http://localhost:3000)。

basepath 已在 Express 3 中删除,因此该设置不再起作用,我的重定向也不再起作用(例如,如果我转到 http://example.com/path/to/app/admin,该路由具有重定向到 /login 的中间件,最终被重定向到 http://example.com/login)。

我可以重写我的重定向

res.redirect('/login')

var redirectUrl = config.basepath ? config.basepath + '/login' : '/login'
res.redirect(redirectUrl)

但这似乎不太优雅。

我考虑过安装方法,但对于这种情况来说似乎有点矫枉过正。

最佳答案

根据the Express API doc你也许应该转身

res.redirect('/login')

res.redirect('login')

并执行安装方法,因为从版本 3 开始这似乎是正确的方法。

关于node.js - Express 3、Apache 代理和基本路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19671196/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com