首页 > 解决方案 > 如何在 express 中使用带有完整 url 或子域的 get 方法?

问题描述

我想在我的 Express 应用程序上重定向某人,但我需要检查 example.com 之前的内容,例如 cdn.example.com、api.sample.example.com 等路径中的内容。如何在我的应用程序中处理路线的部分执行此操作?我也不知道如何在我的测试环境中解决这个问题。

编辑:我试过:

routes.use(function forceMainSite(req, res, next) {
  //var host = req.get('Host');
  var fullUrl = req.protocol + '://' + req.get('host') + req.originalUrl;
  if (fullUrl === 'api.topics.example.com') {
    return res.redirect(301, 'example.com');
  }
  return next();
});

这没有用。我也试过:

module.exports = function(app, hbs) {
    return {
        redirBadLinks: function(req,res,next){
            var fullUrl = req.protocol + '://' + req.get('Host') + req.originalUrl;
              if (fullUrl === 'http://sample.example.com') {
                res.redirect(301, 'example.com');
              }
              return;
        },
        ...

这也不起作用

标签: node.jsexpressurlredirect

解决方案


对于初学者,这是:

 if (fullUrl === 'sample.example.com')

在任何一个代码中都不会匹配,因为fullUrlreq.protocol + '://'. 您正在尝试http://sample.example.comsample.example.com

我建议只比较主机名。


推荐阅读