Go では、ルート ディレクトリから静的コンテンツとホームページの両方を提供できます。ただし、両方のメソッドがルート URL に登録されている場合、競合が発生します。
画像や CSS などの静的コンテンツを提供するには、http.Handle を使用し、 http.Dir.ただし、これをルート URL に対して実行すると、ホームページ ハンドラーと競合します。
ホームページを提供するには、http.HandleFunc を使用し、ホームページのコンテンツ。
競合を解決するには、特定のルート ファイルの提供を検討してください。明示的に。たとえば、sitemap.xml、favicon.ico、robots.txt を個別のファイルとして提供できます。
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 // Mandatory root-based resources serveSingle("/sitemap.xml", "./sitemap.xml") serveSingle("/favicon.ico", "./favicon.ico") serveSingle("/robots.txt", "./robots.txt") // Normal resources http.Handle("/static", http.FileServer(http.Dir("./static/"))) http.ListenAndServe(":8080", nil) }
他のすべての静的リソース (CSS、 JS) を /static のようなサブディレクトリにコピーします。次に、通常は http.Handle と http.Dir を使用してこのサブディレクトリを提供します。
以上がGo のルート ディレクトリから静的コンテンツとホームページを提供するときに競合を回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。