我想要301从以前的站点重定向嵌套的URL,因为pencilblue不支持它们,
例如a/b to page/b
为此,我一直在include/http/request_handler.js上做实验,但也面临一些问题。
调用永远不会出现在RequestHandler.prototype.handleRequest甚至RequestHandler.prototype.onSessionRetrieved中(似乎这些方法不是从任何地方调用的)
因此,我将代码放在RequestHandler中,在确认req不是用于公共资源或api之后,我创建一个新的url并执行
return this.doRedirect(newUrl, 301)
这实际上是可行的,但同时我收到
无法在标头被发送错误后呈现它们
#1075对我帮助不大,因为我不确定我应该修改哪个特定的控制器。我需要尽早捕获req,看看它是否是一个页面,然后重定向到页面前缀url。
提前谢谢。
发布于 2017-08-04 05:19:47
有几种方法可以重定向。您可以在控制器或中间件中执行这些操作。您的正确之处在于,请求处理程序中的某些函数没有被调用。尽管pencilblue团队并没有将它们标记为这样,但这些都是不可取的。他们用/include/http/router.js和include/http/middleware/index.js替换了大量的请求处理程序功能。插件可以注册自己的中间件来劫持请求管道。
有关创建您自己的中间件的更多信息,请参见wiki上的高级路由。
使用路由框架,您的插件将能够注册中间件,该中间件将能够检查请求,然后根据您的特定标准重定向。路由器可以从req.router访问,您可以在那里调用req.router.redirect (来源)。
参考资料:#1224
https://stackoverflow.com/questions/45498499
复制相似问题