Redirect 如何从pencilblue中的嵌套站点重定向url?

Redirect 如何从pencilblue中的嵌套站点重定向url?,redirect,url-redirection,requesthandler,pencilblue,Redirect,Url Redirection,Requesthandler,Pencilblue,我想301重定向以前嵌套的站点的URL,因为pencilblue不支持它们 e、 g.a/b至页面/b 为此,我一直在include/http/request_handler.js中进行实验,但面临一些问题 调用永远不会出现在RequestHandler.prototype.HandlerRequest内部,甚至RequestHandler.prototype.onSessionRetrieved(似乎这些方法不会从任何地方被调用) 因此,我将代码放在RequestHandler中,并在确认re

我想
301
重定向以前嵌套的站点的URL,因为pencilblue不支持它们

e、 g.a/b页面/b

为此,我一直在include/http/request_handler.js中进行实验,但面临一些问题

调用永远不会出现在RequestHandler.prototype.HandlerRequest内部,甚至RequestHandler.prototype.onSessionRetrieved(似乎这些方法不会从任何地方被调用)

因此,我将代码放在RequestHandler中,并在确认req不是用于公共资源或api之后,创建一个新url并执行

返回这个.doRedirect(newUrl,301)

这确实有效,但同时我收到

发送标题后无法呈现标题错误

这对我帮助不大,因为我不确定应该修改哪个特定的控制器。我需要尽早捕获请求,看看它是否是一个页面,然后重定向到页面前缀url


提前感谢。

有两种方法可以重定向。您可以从控制器中间件执行这些操作。您是正确的,请求处理程序中的某些函数没有被调用。尽管PencillBlue团队没有将它们标记为不推荐的,但它们还是被弃用了。他们用
/include/http/router.js
include/http/middleware/index.js
替换了大量请求处理程序功能。插件可以注册自己的中间件来劫持请求管道

有关创建自己的中间件的更多信息,请参见wiki

使用路由框架,您的插件将能够注册中间件,该中间件将能够检查请求,然后根据您的特定条件重定向。路由器可以从req.Router访问,从那里您可以调用req.Router.redirect()


参考资料:

重定向有几种方法。您可以从控制器中间件执行这些操作。您是正确的,请求处理程序中的某些函数没有被调用。尽管PencillBlue团队没有将它们标记为不推荐的,但它们还是被弃用了。他们用
/include/http/router.js
include/http/middleware/index.js
替换了大量请求处理程序功能。插件可以注册自己的中间件来劫持请求管道

有关创建自己的中间件的更多信息,请参见wiki

使用路由框架,您的插件将能够注册中间件,该中间件将能够检查请求,然后根据您的特定条件重定向。路由器可以从req.Router访问,从那里您可以调用req.Router.redirect()

参考: