2013-07-09 10 views
14

Sto provando ad avviare un server HTTP in Go che servirà i miei dati utilizzando i miei gestori, ma allo stesso tempo vorrei utilizzare il file server http di default per servire i file.Gestore di FileServer con altri gestori HTTP

Sto riscontrando problemi nel far funzionare il gestore del FileServer in una sottodirectory URL.

Questo codice non funziona:

package main 

import (
     "fmt" 
     "log" 
     "net/http" 
) 

func main() { 
     http.Handle("/files/", http.FileServer(http.Dir("."))) 
     http.HandleFunc("/hello", myhandler) 

     err := http.ListenAndServe(":1234", nil) 
     if err != nil { 
       log.Fatal("Error listening: ", err) 
     } 
} 

func myhandler(w http.ResponseWriter, req *http.Request) { 
     fmt.Fprintln(w, "Hello!") 
} 

mi aspettavo di trovare la directory locale in localhost: 1234/files/ma restituisce un 404 page not found.

Tuttavia, se cambio l'indirizzo del gestore del fileserver a /, funziona:

 /* ... */ 
     http.Handle("/", http.FileServer(http.Dir("."))) 

Ma ora i miei file sono accessibili e visibili nella directory principale.

Come posso farlo per servire file da un URL diverso da root?

risposta

Problemi correlati