2016-09-07 19 views
0

にワイルドカードとパラメータミキシング私が持っているWebコンテンツ:エクスプレス

/home/mc/backups/servername/latest/overviewer

は私が急行/ nodejsと非常に単純なサーバーを持っています。ここに私のapp.jsです:

var express = require('express'); 
var app = express(); 

//----------------------------------------------------------------------------+ 
// Each server's root points to the latest overviewer page     | 
//----------------------------------------------------------------------------+ 
app.get('/minecraft/:server/*', function(req, res) { 
    console.log('HELLO?'); 
    res.send('Finally some luck!'); 

    /* 
    var 
     server = req.params.server, 
     file = req.params[0] ? req.params[0] : 'index.html', 
     dir = '../backups/' + server + '/latest/overviewer'; 

    res.sendFile(file, { root: dir }); 
    */ 
}); 

app.use(express.static('www')); 

app.listen(80, function() { 
    console.log('Web server listening on port 80'); 
}); 

私はあなたがこの問題のxy一種である場合には、私の意図を見ることができるように実行されているものよりも少し多くのコードが含まれていました。私は静的なファイルをルーティングしたいですが、express.staticを使用することはできません。URLを私のファイル構造と少し違って(そしてサーバー名に基づいて)マッピングしたいからです。

私の単純なサーバーの問題点は何ですか? mysite.com/minecraft/isopreに移動しようとすると、白いページがCannot GET /minecraft/isopreと表示されます。私が*を文字列の最後から削除すると、私はと表示されます。しかし、私はそこに星が欲しいので、mysite.com/minecraft/isopreindex.htmlまたはmysite.com/minecraft/isopre/overviewer.jsに割り当てることができます。

これを行うにはどうすればよいでしょうか?

答えて

1

希望の操作を実行するために、を使用することをお勧めしますか?正規表現のための記号:この場合

app.get('/minecraft/:server/:file?', function(req, res, next) { 
    if('undefined' != typeof req.params.file && req.params.file) { 
     var file = req.params.file; 
    } 

    if('undefined' != typeof req.params.server && req.params.server) { 
     var server = req.params.server; 
    } 

}); 

:ファイルはオプションとなり、ワイルドカードが存在しない場合のNode.jsはアプリケーション全体を失敗することはありません。

これにより、req.params.file変数が未定義の場合、index.htmlファイルを提供することができます。

+0

魅力的な作品です。ありがとう:)私はそれが単純だったと思った – Assimilater

関連する問題