HTTP 서버의 파일에서 .html 확장자 제거
많은 HTTP 서버가 URL 끝에 ".html" 확장자를 자동으로 추가합니다. , 어떤 경우에는 바람직하지 않을 수 있습니다. Go HTTP 서버에서 이 동작을 수정하려면 http.Dir을 사용하여 사용자 정의 http.FileSystem을 구현할 수 있습니다. 방법은 다음과 같습니다.
<code class="go">type HTMLDir struct { d http.Dir }</code>
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) { // 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>
".html" 확장자로 시작하고 대체:
<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>
http.FileSystem을 구현하고 Open 메서드를 사용자 정의하면 ".html" 확장자 관련 동작을 포함하여 HTTP 서버에서 파일을 제공하는 방법을 제어할 수 있습니다.
위 내용은 Go HTTP 서버의 URL에서 .html 확장자를 제거하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!