31

我想将所有不匹配的网址重定向到我的主页。IE。有人去www.mysite.com/blah/blah/blah/foo/barwww.mysite.com/invalid_url- 我想将他们重定向到www.mysite.com

显然我不想干扰我的有效网址。

那么是否有一些通配符匹配器可用于将请求重定向到这些无效的 url?

4

3 回答 3

54

在其余路线的末尾添加一条路线。

app.all('*', function(req, res) {
  res.redirect("http://www.mysite.com/");
});
于 2013-05-19T17:32:22.740 回答
26

您可以在 Express 链中插入“catch all”中间件作为最后一个中间件/路由:

//configure the order of operations for request handlers:
app.configure(function(){
  app.use(express.logger('dev'));
  app.use(express.bodyParser());
  app.use(express.cookieParser());
  app.use(express.static(__dirname+'/assets'));  // try to serve static files
  app.use(app.router);                           // try to match req with a route
  app.use(redirectUnmatched);                    // redirect if nothing else sent a response
});

function redirectUnmatched(req, res) {
  res.redirect("http://www.mysite.com/");
}

...

// your routes
app.get('/', function(req, res) { ... });
...

// start listening
app.listen(3000);

我使用这样的设置来生成自定义404 Not Found页面。

于 2013-05-19T18:06:58.290 回答
3

我在这里超级早,但这是我的解决方案

app.get('/', (req, res) => {
    res.render('index')
})

app.get('*', (req, res) => {
    res.redirect('/')
})

只需使用路由顺序来重定向 1 个特定的 url,然后它就可以为其他所有内容提供包罗万象的路由。你可以把你想要的任何路线放在包罗万象之上,你会很高兴去的。

我的示例只是重定向和 url 给同一个根页面

于 2020-05-02T06:55:18.287 回答