> 백엔드 개발 > Golang > 404 오류를 피하기 위해 GoLang에서 프런트엔드 경로를 리디렉션하는 방법은 무엇입니까?

404 오류를 피하기 위해 GoLang에서 프런트엔드 경로를 리디렉션하는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2024-12-20 18:17:10
원래의
823명이 탐색했습니다.

How to Redirect Frontend Routes in GoLang to Avoid 404 Errors?

GoLang을 프런트엔드 라우팅으로 리디렉션

문제 설명

브라우저에서 "/my_frontend_path"와 같은 경로에 직접 액세스하면 GoLang이 대신 404 오류를 반환합니다. 프론트엔드 React에 라우팅을 위임하는 것 router.

문제 분석

가장 큰 문제는 React 라우터가 초기화되기 전에 이러한 경로에 액세스할 때 서버가 요청을 처리하고 오류를 반환한다는 것입니다.

Single- 서버 솔루션

간단한 서버 측 "포괄적" 접근 방식을 구현하여 지원되지 않는 모든 경로를 프런트엔드 라우터로 리디렉션할 수 있습니다. 이 접근 방식은 요청한 파일이 없는 경우 index.html 페이지를 반환하여 React 라우터가 라우팅을 처리할 수 있도록 하는 방식으로 작동합니다.

코드 구현

const FSPATH = "./build/"

func main() {
    fs := http.FileServer(http.Dir(FSPATH))

    http.HandleFunc("/my_api", func(w http.ResponseWriter, _ *http.Request) {
        w.Write([]byte("API CALL"))
    })

    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        // If requested file exists, return it; otherwise, return index.html
        if r.URL.Path != "/" {
            fullPath := FSPATH + strings.TrimPrefix(path.Clean(r.URL.Path), "/")
            _, err := os.Stat(fullPath)
            if err != nil {
                if !os.IsNotExist(err) {
                    panic(err)
                }

                // Requested file does not exist, return index.html
                r.URL.Path = "/"
            }
        }
        fs.ServeHTTP(w, r)
    })

    http.ListenAndServe(":8090", nil)
}
로그인 후 복사

이 구현에서는:

  • 요청한 파일이 있는지 확인합니다.
  • 없는 경우(예: "/my_frontend_path"), 요청은 index.html로 리디렉션됩니다.
  • 그런 다음 index.html의 React 라우터가 "/my_frontend_path" 라우팅을 처리합니다.

참고

이 방법은 존재하지 않는 파일에 대해 index.html을 반환하므로 'favicon.ico'와 같은 파일에 문제가 발생할 수 있습니다. 이러한 경우 리디렉션을 특정 확장자로만 제한하기 위해 추가 검사를 추가할 수 있습니다.

위 내용은 404 오류를 피하기 위해 GoLang에서 프런트엔드 경로를 리디렉션하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿