사용자 정의 파일 시스템을 사용하여 .html 확장자 제거
URL에 .html 확장자가 표시되지 않도록 하려면 한 가지 접근 방식은 http.Dir을 사용하는 http.FileSystem 인터페이스. 이 솔루션은 http.FileServer의 강력한 코드를 활용합니다.
이를 구현하려면 http.Dir을 포함하는 사용자 정의 유형을 생성하세요.
<code class="go">type HTMLDir struct { d http.Dir }</code>
이 사용자 정의 파일 시스템을 사용하도록 기본 기능을 수정하세요 http.FileServer 대신:
<code class="go">func main() { fs := http.FileServer(HTMLDir{http.Dir("public/")}) http.Handle("/", http.StripPrefix("/", fs)) http.ListenAndServe(":8000", nil) }</code>
다음으로 HTMLDir 유형에 대한 Open 메서드를 정의합니다. 이 방법은 파일 시스템이 파일 요청을 처리하는 방법을 결정합니다.
항상 .html 확장자 사용:
<code class="go">func (d HTMLDir) Open(name string) (http.File, error) { return d.d.Open(name + ".html") }</code>
.html 확장자로 대체 :
<code class="go">func (d HTMLDir) Open(name string) (http.File, error) { f, err := d.d.Open(name) if os.IsNotExist(err) { if f, err := d.d.Open(name + ".html"); err == nil { return f, nil } } return f, err }</code>
파일 이름으로 대체(확장자 없음):
<code class="go">func (d HTMLDir) Open(name string) (http.File, error) { f, err := d.d.Open(name + ".html") if os.IsNotExist(err) { if f, err := d.d.Open(name); err == nil { return f, nil } } return f, err }</code>
위 솔루션을 구현하면 . Go HTTP 서버에 액세스할 때 URL의 html 확장자를 사용하세요.
위 내용은 Go HTTP 서버의 URL에서 .html 확장자를 제거하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!