2012-07-07 5 views
6

Ich habe eine Website in node.js und Express geschrieben. Nun konfigurierte ich lighttpd den node.js Server mit einem Unterverzeichnis zu verwenden:Wie werden relative Pfade in node.js/express behandelt?

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

Wenn ich http://localhost/app/ öffnen erhalte ich Fehler 404, weil ich so etwas wie dies schrieb:

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

Gibt es eine bessere Art und Weise, wie Ändern dieser Zeilen wie:

var relPath = '/app'; 

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

?

+5

'app.use ('/ app', app.router);' kann den Trick tun. –

+0

Es tut tatsächlich den Trick, obwohl ich nicht hinter einem Proxy renne. – ebohlman

+0

Der Proxy sollte nicht so wichtig sein, solange es nicht den Pfad munge. –

Antwort

4

Als Ryan die Lösung kommentiert ist:

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

Wenn Sie zum Beispiel verwenden express.static oder express.favicon Sie haben auch app.use den Weg zu sagen:

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

Denken Sie daran, schreiben ‚/ app‘ vor jedem internen Link in Ihrem HTML gesetzt.

+0

dies funktioniert nicht mehr in Express 4.x – javiertoledos