我想将所有不匹配的网址重定向到我的主页。 IE浏览器。有人转到www.mysite.com/blah/blah/blah/foo/bar
或www.mysite.com/invalid_url
- 我想将其重定向到www.mysite.com
显然,我不想干涉我的有效网址。
那么我是否可以使用一些通配符匹配器将请求重定向到这些无效的URL?
答案 0 :(得分:32)
在其余路线的末尾添加路线。
app.all('*', function(req, res) {
res.redirect("http://www.mysite.com/");
});
答案 1 :(得分:20)
您可以在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
页面。
答案 2 :(得分:1)
我在这里很早,但这是我对此的解决方案
app.get('/', (req, res) => {
res.render('index')
})
app.get('*', (req, res) => {
res.redirect('/')
})
只需使用路由顺序重定向1个特定的url,然后它才能为所有其他内容提供所有路由。您可以将所有想要的路线放在全包之上,这将是您的最佳选择。
我的示例只是将重定向和url重定向到同一根页面