Heim >Backend-Entwicklung >Golang >Wie entferne ich die .html-Erweiterung von URLs in einem Go-HTTP-Server?
.html-Erweiterung aus Dateien auf einem HTTP-Server entfernen
Viele HTTP-Server fügen am Ende von URLs automatisch eine „.html“-Erweiterung hinzu , was in manchen Fällen unerwünscht sein kann. Um dieses Verhalten in einem Go-HTTP-Server zu ändern, können Sie mithilfe von http.Dir ein benutzerdefiniertes http.FileSystem implementieren. So geht's:
<code class="go">type HTMLDir struct { d http.Dir }</code>
Die Open-Methode bestimmt, wie Dateien geöffnet werden sollen. Abhängig von Ihren Anforderungen haben Sie mehrere Möglichkeiten:
Erweiterung „.html“ immer anhängen:
<code class="go">func (d HTMLDir) Open(name string) (http.File, error) { return d.d.Open(name + ".html") }</code>
Fallback auf die Erweiterung „.html“:
<code class="go">func (d HTMLDir) Open(name string) (http.File, error) { // Try name as supplied f, err := d.d.Open(name) if os.IsNotExist(err) { // Not found, try with .html if f, err := d.d.Open(name + ".html"); err == nil { return f, nil } } return f, err }</code>
Beginnen Sie mit der Erweiterung „.html“ und Fallback:
<code class="go">func (d HTMLDir) Open(name string) (http.File, error) { // Try name with added extension f, err := d.d.Open(name + ".html") if os.IsNotExist(err) { // Not found, try again with name as supplied. if f, err := d.d.Open(name); err == nil { return f, nil } } return f, err }</code>
<code class="go">fs := http.FileServer(HTMLDir{http.Dir("public/")}) http.Handle("/", http.StripPrefix("/", fs))</code>
Durch die Implementierung von http.FileSystem und die Anpassung der Open-Methode können Sie steuern, wie Dateien von Ihrem HTTP-Server bereitgestellt werden, einschließlich des Verhaltens rund um „.html“-Erweiterungen.
Das obige ist der detaillierte Inhalt vonWie entferne ich die .html-Erweiterung von URLs in einem Go-HTTP-Server?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!