2012-05-16 13 views
8

voglio usare la configurazione del server statico espresso per l'implementazione di un server statico:Come posso implementare le directory virtuali con node.js ed express?

app.configure(function() { 
    app.use(express.static(__dirname + '/public')); 
}); 

ma voglio mappare l'URL http://myhost/url1 alla directory C:\dirA\dirB e http://myhost/url2 alla directory C:\dirC

Come può essere implementato utilizzando express.static?

risposta

5

A seconda del numero di directory che si intende mappare in questo modo, è sufficiente creare collegamenti simbolici per tali directory nella cartella public.

In Windows:

mklink /D c:\dirA\dirB public\url1 

In Linux o OSX:

ln -s /dirA/dirB public/url1 

Poi il server attivi statici dovrebbe servire da quelle directory in modo trasparente (non ho mai provato su Windows ma non lo faccio vedi perché non funzionerebbe).

In alternativa, se si voleva includere un qualche tipo di routing dinamico, si potrebbe scrivere il proprio middleware per sostituire express.static che è in realtà connect.static sotto il cofano. Dai un'occhiata a static.js nel connect source e vedi come è implementato, dovrebbe essere abbastanza semplice scrivere la tua variazione.

7

Questo dovrebbe funzionare per voi:

var serveStatic = require("serve-static"); 
app.use('/url1', serveStatic('c:\\dirA\\dirB')); 
app.use('/url2', serveStatic('C:\\dirC')); 

Date un'occhiata alla documentazione per app.use().

+0

Questa è una risposta molto più semplice ed efficiente di quella accettata. – havlock

Problemi correlati