루트에서 홈페이지 및 정적 콘텐츠 제공
Go에서는 홈페이지에 대한 루트 핸들러를 유지하면서 루트 디렉터리의 정적 콘텐츠를 제공할 수 있습니다. 다음 단계를 사용하여 수행합니다.
루트 디렉터리 파일 처리 명시적으로
serveSingle과 같은 함수를 생성하여 루트 디렉터리에 있는 개별 파일을 제공합니다. 이 접근 방식은 일반적으로 루트에 있을 것으로 예상되는 sitemap.xml, favicon.ico 및 robots.txt와 같은 파일에 적합합니다.
func serveSingle(pattern string, filename string) { http.HandleFunc(pattern, func(w http.ResponseWriter, r *http.Request) { http.ServeFile(w, r, filename) }) }
파일 처리기 등록
루트의 특정 파일에 대한 요청을 처리하는 ServeSingle 함수를 등록하세요. 디렉토리:
serveSingle("/sitemap.xml", "./sitemap.xml") serveSingle("/favicon.ico", "./favicon.ico") serveSingle("/robots.txt", "./robots.txt")
하위 디렉토리에서 정적 콘텐츠 제공
http.FileServer를 사용하여 "/static/"과 같은 하위 디렉토리에서 정적 콘텐츠를 제공합니다.
http.Handle("/static", http.FileServer(http.Dir("./static/")))
홈페이지 회원가입 핸들러
"/"에서 홈페이지에 대한 요청을 처리할 HomeHandler와 같은 루트 핸들러를 등록합니다:
http.HandleFunc("/", HomeHandler)
예제 코드
이러한 기술을 결합하면 다음과 같은 결과가 나옵니다. code:
package main import ( "fmt" "net/http" ) func HomeHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "HomeHandler") } func serveSingle(pattern string, filename string) { http.HandleFunc(pattern, func(w http.ResponseWriter, r *http.Request) { http.ServeFile(w, r, filename) }) } func main() { http.HandleFunc("/", HomeHandler) // homepage serveSingle("/sitemap.xml", "./sitemap.xml") serveSingle("/favicon.ico", "./favicon.ico") serveSingle("/robots.txt", "./robots.txt") http.Handle("/static", http.FileServer(http.Dir("./static/"))) http.ListenAndServe(":8080", nil) }
별도의 하위 디렉터리에서 정적 콘텐츠를 제공하는 동시에 루트 디렉터리 파일을 명시적으로 처리함으로써 Apache 및 Nginx와 같은 웹 서버와 유사한 동작으로 홈페이지 처리와 정적 콘텐츠 제공을 모두 유지할 수 있습니다.
위 내용은 Go의 루트 디렉터리에서 홈페이지와 정적 파일을 제공하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!