2013-07-09 8 views
14

Próbuję uruchomić serwer HTTP w Go, który będzie obsługiwał moje własne dane przy użyciu moich własnych procedur obsługi, ale jednocześnie chciałbym użyć domyślnego serwera plików http do serwowania plików.Obsługa plików FileServer z innymi procedurami obsługi HTTP

Mam problemy z obsługą programu FileServer w podkatalogu URL.

Ten kod nie działa:

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!") 
} 

Spodziewałem się znaleźć lokalnego katalogu na localhost: 1234/pliki/ale zwraca 404 page not found.

Jednak jeśli zmienię adres procedury obsługi na serwerze, do /, to działa:

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

Ale teraz moje pliki są dostępne i widoczne w katalogu głównym.

Jak mogę zrobić to, aby wyświetlać pliki z innego adresu URL niż root?

Odpowiedz

Powiązane problemy