2012-02-03 12 views
7

とWWWに非WWWをリダイレクトします。私はexample.comをwww.example.comにリダイレクトしたいのですが、これはExpressを使って可能ですか?は、私はそうのような静的なディレクトリを提供していますNode.jsのとエクスプレス

+0

あなたはcertaできますがほとんどの場合、Webサーバーでこれを処理させたい場合は、Expressを使用してアプリケーション層でこれを実行します。それは、そこにいる必要がないときにアプリケーションから負荷を守るのに役立ちます。 – Brad

+0

http://stackoverflow.com/questions/7013098/node-js-www-non-www-redirection –

+0

希望する場合はhttps://stackoverflow.com/a/39731460/1946016をご利用ください回答 – karthikdivi

答えて

9

はい。これはそれを行う必要があります。また

var express = require("express"); 
var app = express.createServer(); 
var port = 9090; 
app.all(/.*/, function(req, res, next) { 
    var host = req.header("host"); 
    if (host.match(/^www\..*/i)) { 
    next(); 
    } else { 
    res.redirect(301, "http://www." + host); 
    } 
}); 
app.use(express.static(__dirname + "/public")); 
app.listen(port); 
+0

ポート9090にもリダイレクトする必要はありませんか? – chovy

+0

あなたres.redirect argsを逆にする必要があります。 – chovy

+0

エクスプレス2.xでは 'res.redirect = function(url、status){'でした。注文を交換するために3.xで変更されました。この例を更新します。通常、ポート80でリッスンしているWebサーバーと、別のポート(この例では9090)でリバースプロキシを使用しているため、URLに9090ポートを含めたくない場合があります。 Expressがインターネットに直接接続されていた場合は、デフォルトポートを使用していない場合はポートが必要です。 –

8

、あなたは、例えば、正確に何をしたいんExpress用の既製モジュールを使用することができますノードフォースドメイン。

詳細はhttps://github.com/goloroden/node-force-domainを参照してください。

例をリダイレクトしながらhttps://npmjs.org/package/express-force-domain

+0

このプラグインがポートとhttpで動作しないのを発見しました – chovy

+0

これについてGitHubで引き続き議論しましょう。あなたが[問題](https://github.com/goloroden/node-force-domain/issues/1) )for this :-) –

+1

このモジュールGoloをありがとう。 Googleアナリティクスは「Redundantant Hostnames」という言葉を頻繁に言っていました。この問題を回避するには、冗長ホスト名の1つから別のホスト名に301リダイレクトを設定するか、ホスト名から「www。」を削除する検索と置換のフィルタを作成します"。あなたのモジュールは完全にそれを解決します。 {{モデレータのGoogleアナリティクスメッセージは意図的にここに追加されており、これは仲間のコーダーにこのスレッドを簡単に見つけるのに役立ちます}} –

2

http://foo.com/foohttp://www.foo.com/foo

var app = express.createServer(); 
    self.app.all(/.*/, function(req, res, next) { 
     var host = req.header("host"); 
     if (host.match(/^www\..*/i)) { 
     next(); 
     } else { 
     res.redirect(301, "http://www." + host + req.url); 
     } 
    }); 
    app.use('/',express.static('public')); 
+0

http:// httpsでも –

7

次のコードは、パスを保存:NPMに

//install 
npm install express-force-domain 

///app.js 
app.all('*', require('./express-force-domain')('http://www.example.com')); 

パッケージ:あなたはNPMから急行力ドメインパッケージを使用することができます

関連する問題