2016-06-27 11 views
0

こんにちは私はhttpsを自分のウェブサイトのデフォルトルートにしたいと思っていました。Node.js httpsを多くのリダイレクトに強制する

私はこれが

if (app.get('env') === 'production') { 
    app.use (function (req, res, next) { 
    if (!req.secure){ 
     // request was via http, so redirect to https 
     res.redirect('https://' + req.headers.host + req.url); 
    } 
    }); 
} 
その後

を実現するために、次のコードを持って、私はすべてが正常に動作HTTPSのリダイレクトを使用しない場合、私は

app.use(express.static(path.join(__dirname, 'public'))); 
app.use("/de", express.static(__dirname + "/public")); 
app.use("/de/home", express.static(__dirname + "/public")); 

のような複数のルートを持っています。私のリダイレクトエラーはどこですか?

+0

は、我々はあなたがHTTPSでリッスンしていると仮定することができ、これが役に立てば幸い? HTTPSをブラウズすると動作しますか? – leetibbett

+0

私たちは想定できません。私はちょうど誰もがhttpsにリダイレクトされたかった – Silve2611

+0

あなたのサーバはHTTPとHTTPSの両方でこれを動作させるためにリッスンする必要があります – leetibbett

答えて

0

あなたはエンコードされたURIコンポーネント

if (app.get('env') === 'production') { 
    app.use (function (req, res, next) { 
    if (!req.secure){ 
     // request was via http, so redirect to https 
     res.redirect('https://' + encodeURIComponent(req.headers.host) + encodeURIComponent(req.url)); 
    } 
    }); 
} 

これはうまく動作するはずにあなたのコンポーネントを有効にしてください、私は

+0

これは動作しません。私はワットがリダイレクトにある場合、私はttpsを取得します:// localhost%3A3000%2F – Silve2611

関連する問題