Как перенаправить все непревзойденные URL-адреса с помощью Express?

Я хочу перенаправить все непревзойденные URL-адреса на мою домашнюю страницу. То есть. кто-то отправляется в www.mysite.com/blah/blah/blah/foo/bar или www.mysite.com/invalid_url - я хочу перенаправить их на www.mysite.com

Очевидно, я не хочу вмешиваться в мои действительные URL.

Итак, есть ли какой-либо подстановочный знак, который я могу использовать для перенаправления запросов на эти недопустимые URL?

Ответы

Ответ 1

Вы можете вставить промежуточное ПО "уловить все" в качестве последнего промежуточного программного обеспечения/маршрута в цепочке Express:

//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.

Ответ 2

Добавьте маршрут в конец остальных маршрутов.

app.all('*', function(req, res) {
  res.redirect("http://www.mysite.com/");
});