静的なサイト、Dokkuにデプロイするシンプルな単一ページレイアウトがあります。 wwwからwww以外へ、および*.website1.com
からwebsite2.com
にリダイレクト(301)する必要がありますが、その方法はわかりません。私はnpmでexpress-force-domainを使用しようとしましたが、それは私の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'))
})
それが機能するバージョンですが、リダイレクトはありません。
res.redirect(301, 'http://yourotherdomain.com' + req.path)
Express documentation を参照してください。
Googleからここに到着した人には、@ fredericの答えはまだエクスプレスドキュメントで推奨されていますが、response.send(status, body)
スタイルは非推奨になり、警告が生成されます(執筆時点でExpress 4.13.4 )、さらに重要なことに、リダイレクト時に望ましい結果が得られないことがわかりました。
@Markasoftwareが述べたように、自動的に追跡される301を実現するには、ロケーションヘッダーを目的のURLに設定する必要があります。リクエストの本文は空にすることができます:
response.set('location', 'https://my.redirect.location');
response.status(301).send()
私が理解している限り、HTTP 301コードを設定するには、応答コードを301
に設定し、Location
ヘッダーをリダイレクト先のURLに設定します。しかし、これはwww以外のURLへのwwwを行うための好ましい方法ではないと思います