2012-07-07 13 views
6

Ho scritto un sito Web in node.js ed express. Ora ho configurato lighttpd di utilizzare il server node.js con una sottodirectory:Come gestire i percorsi relativi in ​​node.js/express?

$HTTP["url"] =~ "^/app/" { 
    proxy.server = ("" => ((
           "host" => "127.0.0.1", 
           "port" => 3000 
          )) 
       ) 
} 

Quando apro http://localhost/app/ ottengo l'errore 404 perché ho scritto qualcosa di simile:

app.get('/', function (req, res){ 
    res.render('index'); 
}); 

Esiste un modo migliore come modificando queste righe come:

var relPath = '/app'; 

app.get(relPath + '/', function (req, res){ 
    res.render('index'); 
}); 

?

+5

'app.use ('/ app', app.router);' può fare il trucco. –

+0

In effetti fa il trucco, anche se non sto correndo dietro a un proxy. – ebohlman

+0

Il proxy non dovrebbe importare a patto che non munge il percorso. –

risposta

4

Come Ryan ha commentato la soluzione è:

app.use('/app', app.router); 

Se si utilizza ad esempio express.static o express.favicon dovete dire app.use il percorso anche:

app.use('/app', express.favicon(__dirname + '/public/images/favicon.ico')); 
app.use('/app', express.static(__dirname + '/public')); 

Ricordati di scrivere '/ app' prima di ogni link interno si imposta nel tuo html.

+0

questo non funziona più in espresso 4.x – javiertoledos