Как сделать редирект (301) в Node.js / Express?

javascript node.js redirect express

26016 просмотра

3 ответа

У меня есть статический сайт, простой одностраничный макет, который я разверну в Dokku. Мне нужно сделать редирект (301) с www на non www и from *.website1.comto website2.com, но я не знаю как. Я пытался использовать express-force-domain в npm, но это сводит мой URL с ума, и у меня были некоторые циклы перенаправления, я пробовал другие методы, которые я нахожу в сети, но ни один из них не удался.

мой server.js это:

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'))
})

Это версия, которая работает, но без перенаправлений.

Автор: renatomattos2912 Источник Размещён: 12.11.2019 09:13

Ответы (3)


34 плюса

res.redirect(301, 'http://yourotherdomain.com' + req.path)

Смотри документацию Express .

Автор: Frederic Размещён: 03.07.2014 12:55

12 плюса

Для тех, кто прибывает сюда из Google, хотя ответ @ frederic по-прежнему является тем, что рекомендуется в экспресс-документах, этот response.send(status, body)стиль устарел и выдаст предупреждение (я нахожусь на Express 4.13.4 во время написания), и что более важно, я нашел что он больше не дает желаемого результата при перенаправлении.

Как упоминалось в @Markasoftware, для достижения автоматического отслеживания 301, вам нужно установить заголовок местоположения на URL, который вы хотите. Тело запроса может быть пустым:

   response.set('location', 'https://my.redirect.location');
   response.status(301).send()
Автор: MaxPRafferty Размещён: 27.03.2017 07:30

0 плюса

Насколько я понимаю, чтобы установить код HTTP 301, вы должны установить код ответа, 301а затем установить в Locationзаголовке тот URL-адрес, на который вы хотите перенаправить его. Я не думаю, что это предпочтительный способ сделать с URL-адресами без www, хотя

Автор: markasoftware Размещён: 10.06.2014 11:51
Вопросы из категории :
32x32