Spring Framework/πŸ“› μ—λŸ¬ 기둝

[πŸ“› Error] λ¦¬μ•‘νŠΈ 배포 ν›„ μƒˆλ‘œκ³ μΉ¨ μ‹œ 404 Error

soogoori 2023. 11. 4. 20:49

λ°°ν¬ν•˜κ³ μ„œ λ¬Έμ œκ°€ μ—†μ–΄λ³΄μ˜€μœΌλ‚˜, μƒˆλ‘œκ³ μΉ¨ν•  λ•Œλ§ˆλ‹€ 404 μ—λŸ¬κ°€ λœ¬λ‹€. 

λ‘œμ»¬μ—μ„œλŠ” μ •μƒμ μœΌλ‘œ μž‘λ™ν–ˆλ˜ 것 같은데.. 

검색해보면 μ—¬λŸ¬ μ‚¬λžŒλ“€μ΄ ν•œ λ²ˆμ―€μ€ κ²ͺκ³  μ§€λ‚˜κ°„ μ—λŸ¬μΈ 것 κ°™λ‹€. 

 

πŸ‘€ μ—λŸ¬ νŒŒμ•…ν•˜κΈ° 

 

λ¦¬μ•‘νŠΈμ˜ νŠΉμ„±μ„ νŒŒμ•…ν•˜λ©΄ μ‰½κ²Œ ν•΄κ²°ν•  수 μžˆλŠ” λ¬Έμ œμ˜€λ‹€. 

 

μ‚¬μš©μžκ°€ 처음 접속 ν›„ μ„œλ²„μ— μš”μ²­ν•  μ‹œ index.html을 λ³΄λ‚΄μ£ΌλŠ”λ° 이 νŒŒμΌμ—λŠ” bundle.jsλ‚˜ css 파일이 μ—°κ²°λ˜μ–΄ μžˆλ‹€. 

html νŒŒμΌμ„ μ½μœΌλ©΄μ„œ react-routerκ°€ μž‘λ™λ˜λŠ”λ° μ„œλ²„ μͺ½μ΄ μ•„λ‹Œ ν΄λΌμ΄μ–ΈνŠΈ μ‚¬μ΄λ“œμ—μ„œ 이루어지며 λ‹¨μˆœνžˆ μ£Όμ†Œλ§Œ λ°”κΏ”μ£Όλ©° 경둜λ₯Ό μž‘μ•„μ€€λ‹€. 

μ΄λŸ¬ν•œ μƒνƒœμ—μ„œ μƒˆλ‘œκ³ μΉ¨μ„ ν•˜κ²Œ 되면 url은 react-router의 경둜둜 λ˜μ–΄ 있기 λ•Œλ¬Έμ— μ„œλ²„λŠ” μ–΄λ–€ 것을 λ°˜ν™˜ν•΄λ‹¬λΌλŠ” 것인지 μ•Œ 수 μ—†μ–΄μ„œ 404 μ—λŸ¬κ°€ λ°œμƒν•˜λŠ” 것이닀. 

 

 

πŸ‘©‍πŸ”§ μ—λŸ¬ ν•΄κ²°ν•˜κΈ° 

 

@Controller
public class WebController implements ErrorController {
    @GetMapping(value =  {"", "/join","/mypage", "/login", "/shoes", "/home",
            "/myShoes", "/logout", "/writeReview", "/userpage", "/error", "/shoes/**"})
    public String forward() {
        return "forward:/index.html";
    }
}

 

λͺ¨λ“  URL을 index.html으둜 forwardingν•˜λ„λ‘ μ„€μ •ν•΄μ£Όμ—ˆλ‹€. 

 

이외에도 nginxλ₯Ό μ΄μš©ν•΄μ„œ ν•΄κ²°ν•˜λŠ” 방법도 μžˆλ‹€κ³  ν•œλ‹€. 

location / {
 try_files $uri /index.html;
}

μ„€μ •λ˜μ§€ μ•Šμ€ κ²½λ‘œμ— λŒ€ν•œ 기본값을 μ§€μ •ν•˜λŠ” 것이닀. 

nginx.conf νŒŒμΌμ— μœ„μ™€ 같은 λ‚΄μš©μ„ μ„€μ •ν•΄μ£Όλ©΄ λœλ‹€. 

$uri 경둜λ₯Ό 찾지 λͺ»ν•˜λ©΄ index.html둜 λ³΄λ‚Έλ‹€λŠ” μ˜λ―Έμ΄λ‹€. 

 

 

λ‹€μŒμ—λŠ” λ¦¬μ•‘νŠΈμ˜ νŠΉμ„±μ— κ΄€λ ¨λœ λ‚΄μš©μ„ 정리해봐야겠닀. . 

 

μ°Έκ³