Prueba tus redirecciones web y respuestas HTTP
Redirecciones con Node.js / Express
Node.js es un entorno de ejecución JavaScript en el servidor, habitualmente usado con el framework Express para construir aplicaciones web. Las redirecciones se gestionan directamente en el código con el método res.redirect().
Redirección 301 (permanente) con Express
Redirigir una página concreta:
app.get('/pagina-antigua', (req, res) => {
res.redirect(301, 'https://www.ejemplo.net/nueva-pagina');
});
Redirigir todas las URLs con un prefijo determinado:
app.get('/directorio-antiguo/*', (req, res) => {
const nuevaRuta = req.path.replace('/directorio-antiguo', '/directorio-nuevo');
res.redirect(301, nuevaRuta);
});
Redirección 302 (temporal) con Express
res.redirect() envía por defecto un código 302:
app.get('/pagina-temporal', (req, res) => {
res.redirect('https://www.ejemplo.net/pagina-destino');
});
Forzar HTTPS (middleware)
Colócalo antes del resto de rutas para forzar todas las peticiones a HTTPS:
app.use((req, res, next) => {
if (req.headers['x-forwarded-proto'] !== 'https') {
return res.redirect(301, 'https://' + req.headers.host + req.url);
}
next();
});
Nota: x-forwarded-proto es la cabecera que envían los proxies y balanceadores de carga (Nginx, Heroku, AWS…). En un servidor sin proxy intermedio, usa req.secure en su lugar.
Ejemplo completo
const express = require('express');
const app = express();
// Forzar HTTPS
app.use((req, res, next) => {
if (req.headers['x-forwarded-proto'] !== 'https') {
return res.redirect(301, 'https://' + req.headers.host + req.url);
}
next();
});
// Redirección 301
app.get('/pagina-antigua', (req, res) => {
res.redirect(301, '/nueva-pagina');
});
app.listen(3000);