静的サブディレクトリ内のファイルにアクセスしようとすると、404、Not Found、Homeing /にアクセスできますが、他の手ではうまく動作しますが、自宅ファイルから単に:(壊れている、だから私は、私はファイルを提供すると同時に、私のルートディレクトリにリダイレクトすることができるように変更するには何を知りたいのですFileserverはすべてのファイルに対して404を返します
私のパス構造:。
root/
->html
->static
->entry.go
他のスレッドがここにあり、r.PathPrefix( "/")。Handler(...)を実行することをお勧めしますが、静的な外部ファイルにアクセスすると、私のプロジェクトのルートにある別のhtmlファイルにあります。さらに、いずれかにリダイレクトすると404、Not Foundが返されます。
ここでは、コードです:
package main
import (
"fmt"
"net/http"
"html/template"
"github.com/gorilla/mux"
"os"
)
func IfError(err error, quit bool) {
if err != nil {
fmt.Println(err.Error())
if(quit) {
os.Exit(1);
}
}
}
func NotFound(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(404)
t, _ := template.ParseFiles("html/404")
err := t.Execute(w, nil)
IfError(err, false)
}
func Home(w http.ResponseWriter, r *http.Request) {
t, _ := template.ParseFiles("html/home")
err := t.Execute(w, nil)
IfError(err, false)
}
func RedirectRoot(servefile http.Handler) http.Handler {
return http.HandlerFunc(func (w http.ResponseWriter, r *http.Request) {
if r.URL.Path == "/" {
redirect := r.URL.Host+"/home"
http.Redirect(w, r, redirect, http.StatusSeeOther)
} else {
servefile.ServeHTTP(w, r)
}
})
}
func main() {
r := mux.NewRouter()
ServeFiles := http.StripPrefix("/", http.FileServer(http.Dir("static/")))
r.Handle("/", RedirectRoot(ServeFiles))
r.HandleFunc("/home", Home)
r.NotFoundHandler = http.HandlerFunc(NotFound)
fmt.Printf("Listening ...")
IfError(http.ListenAndServe(":8081", r), true)
}
は、それは予期しない結果が生じることがあり、すべてのルートにマッチします、私はあなたのコードで参照問題
r.Handle("/", RedirectRoot(ServeFiles))
非常
私のルートディレクトリを自宅にリダイレクトしたい、あなたのimlementationでウェブサイトにアクセスすると404が見つかりません、favicon.icoはロードされません – Whiteclaws
答えにさらに詳しい情報を追加してください一見。 – jeevatkm