Estoy creando una aplicación de nodo js que necesita devolver una página 404 para todas las rutas excepto para la ruta /video .
app.get('/video/*', Video.show) app.get('*', (req,res) => res.render('not_found')) Esto funciona si la URL no tiene subdirectorios. El problema surge cuando alguien ingresa una URL con subdirectorios como /hello/subhello/ . Esto no es captado por mis rutas.
Ya probé estas opciones sin éxito:
app.get('/*', (req,res) => res.render('not_found')) app.use((req,res) => res.render('not_found'))Me estoy perdiendo de algo ?
Gracias
EDITAR
Cuando elimino el código para configurar los manillares, las rutas se siguen como se esperaba.
Este es el código de configuración del manillar:
app.engine('.hbs', exphbs({ extname:'.hbs', defaultLayout:'layout.hbs', layoutsDir: __dirname+ '/views' })) app.set('view engine', '.hbs') app.set('views', __dirname + '/views')Aquí tienes una demostración de trabajo:
var express = require('express'); var app = express(); var exphbs = require('express-handlebars'); app.engine('.hbs', exphbs({ extname:'.hbs', defaultLayout:'layout.hbs', layoutsDir: __dirname+ '/views' })) app.set('view engine', '.hbs') app.set('views', __dirname + '/views') app.get(['/videos', '/videos/*'], function (req, res) { res.send('Hello World!'); }); app.use(function(req, res) { res.status(404).send('Not found') }) app.listen(1233, function () { console.log('Example app listening on port 1233!'); });Ya sea que acceda a localhost:1233/videos o localhost:1233/videos/* , obtendrá una respuesta Hello World. Si vas a otro lugar, obtienes el no encontrado.
EDITAR: Se agregó el código del manillar, igual que el tuyo. Todavía funciona como se esperaba.