javascript - tráfico - ¿Cómo hacer una redirección(301) en Node.js/Express?
redirect 301 www (3)
Para cualquiera que llegue aquí desde Google, mientras que la respuesta de @ frederic sigue siendo lo que recomiendan los documentos expresos, el estilo response.send(status, body)
ha quedado en desuso y generará una advertencia (estoy en Express 4.13.4 en el momento de escribiendo) y, lo que es más importante, descubrí que ya no producía el resultado deseado al redirigir.
Como mencionó @Markasoftware, para lograr un 301 seguido automáticamente, debe establecer el encabezado de ubicación en la url que desee. El cuerpo de la solicitud puede estar vacío:
response.set(''location'', ''https://my.redirect.location'');
response.status(301).send()
Tengo un sitio estático, un diseño simple de una sola página que implemento en Dokku. Necesito hacer una redirección (301) de www a non www y de *.website1.com
a *.website1.com
, pero no sé cómo. Estaba tratando de usar Express-force-domain en npm pero hace que mi URL se vuelva loca y al tener algunos bucles de redirección, estaba probando otros métodos que encontré en la web pero ninguno tuvo éxito.
mi server.js es:
var express = require(''express'')
var app = express();
app.set(''port'', (process.env.PORT || 80))
app.use(express.static(__dirname + ''/public''))
app.get(''/'', function(request, response) {
response.send(''Hello World!'')
})
app.listen(app.get(''port''), function() {
console.log("Node app is running at localhost:" + app.get(''port''))
})
Esa es la versión que funciona, pero sin redirecciones.
Por lo que yo entiendo, para establecer un código HTTP 301, debe establecer el código de respuesta en 301
y luego establecer el encabezado de la Location
a la URL a la que desea redirigir. No creo que esta sea la forma preferida de hacer www a urls no www.
res.redirect(301, ''http://yourotherdomain.com'' + req.path)
Ver documentación exprés .