Express JS redirect to default page instead of "Cannot GET"
Solution 1
Try to add the following route as the last route:
app.use(function(req, res) {
res.redirect('/');
});
Edit:
After a little researching I concluded that it's better to use app.get
instead of app.use
:
app.get('*', function(req, res) {
res.redirect('/');
});
because app.use
handles all HTTP methods (GET
, POST
, etc.), and you probably don't want to make undefined POST
requests redirect to index page.
Solution 2
JUst try to put one get
handler with *
after all your get handlers like bellow.
app.get('/', routes.getHomePage);//When `/` get the home page
app.get('/login',routes.getLoginPage); //When `/login` get the login page
app.get('*',routes.getHomePage); // when any other of these both then also homepage.
But make sure *
should be after all, otherwise those will not work which are after *
handler.
Related videos on Youtube
Srivathsa
In a mission to teach machines in order to understand the world better. Machine Learning researcher and AI enthusiast. Good experience in a wide variety of web technologies.
Updated on September 14, 2022Comments
-
Srivathsa over 1 year
I am using express JS and I have a set of routes that I have defined as follows
require('./moduleA/routes')(app); require('./moduleB/routes')(app);
and so on. If I try to access any of the routes that I have not defined in the above routes, say
http://localhost:3001/test
it says
Cannot GET /test/
But instead of this I want to redirect to my app's index page. I want this redirection to happen to all of the undefined routes. How can I achieve this?