Testez vos redirections web et réponses HTTP
La redirection avec Node.js / Express
Node.js est un environnement d'exécution JavaScript côté serveur, souvent utilisé avec le framework Express pour créer des applications web. Les redirections se gèrent directement dans le code, avec la méthode res.redirect().
Redirection 301 (permanente) avec Express
Rediriger une page précise :
app.get('/ancienne-page', (req, res) => {
res.redirect(301, 'https://www.exemple.net/nouvelle-page');
});
Rediriger toutes les URLs d'un préfixe :
app.get('/ancien-repertoire/*', (req, res) => {
const newPath = req.path.replace('/ancien-repertoire', '/nouveau-repertoire');
res.redirect(301, newPath);
});
Redirection 302 (temporaire) avec Express
res.redirect() envoie un code 302 par défaut :
app.get('/page-temporaire', (req, res) => {
res.redirect('https://www.exemple.net/page-destination');
});
Forcer le HTTPS (middleware)
À placer avant les autres routes, pour forcer toutes les requêtes en HTTPS :
app.use((req, res, next) => {
if (req.headers['x-forwarded-proto'] !== 'https') {
return res.redirect(301, 'https://' + req.headers.host + req.url);
}
next();
});
Note : x-forwarded-proto est l'entête envoyée par les proxys et load balancers (Nginx, Heroku, AWS…). Sur un serveur direct sans proxy, utilisez req.secure à la place.
Exemple complet
const express = require('express');
const app = express();
// Forcer HTTPS
app.use((req, res, next) => {
if (req.headers['x-forwarded-proto'] !== 'https') {
return res.redirect(301, 'https://' + req.headers.host + req.url);
}
next();
});
// Redirection 301
app.get('/ancienne-page', (req, res) => {
res.redirect(301, '/nouvelle-page');
});
app.listen(3000);