๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์˜ค๋ฅ˜ ๋ฐ ํ•ด๊ฒฐ

[Vue.js] SpringBoot + Vue.js 404ํŽ˜์ด์ง€ ํ•ด๊ฒฐ

by Jo__y 2022. 10. 3.

๋ฌธ์ œ๋ฐœ์ƒ

HTML5 ํžˆ์Šคํ† ๋ฆฌ ๋ชจ๋“œ

vue-router ์˜ ๊ธฐ๋ณธ ๋ชจ๋“œ๋Š” hash mode ๋กœ, URL ํ•ด์‹œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ „์ฒด URL ์„ ์‹œ๋ฎฌ๋ ˆ์ดํŠธ ํ•˜๋ฏ€๋กœ URL์ด ๋ณ€๊ฒฝ๋  ๋•Œ ํŽ˜์ด์ง€๊ฐ€ ๋‹ค์‹œ ๋กœ๋“œ ๋˜์ง€ ์•Š๋Š”๋‹ค...!?

# ํ•ด์‹œ๋ฅผ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด ๋ผ์šฐํ„ฐ์˜ history ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

SPA(Single Page Application)

ํŠน์„ฑ์ƒ vue๋Š” index.html ํŒŒ์ผ ํ•˜๋‚˜๋กœ ๊ด€๋ฆฌํ•œ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ URL ์„ ์ž…๋ ฅํ•˜๋ฉด ์„œ๋ฒ„์ ‘์†์„ ๋จผ์ € ์‹œ๋„ํ•˜๊ธฐ๋•Œ๋ฌธ์—
์„œ๋ฒ„์„ค์ •์ด ์—†๋Š” ํด๋ผ์ด์–ธํŠธ ์•ฑ์ด๋ผ ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ URL ์— ์ ‘์†ํ•˜๋ฉด
404 ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

ํ•ด๊ฒฐ๋ฐฉ์•ˆ

  • ์„œ๋ฒ„์— ๊ฐ„๋‹จํ•˜๊ฒŒ ํฌ๊ด„์ ์ธ ๋Œ€์ฒด ๊ฒฝ๋กœ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด๋œ๋‹ค!
    SPA ์•ฑ์— ์žˆ๋Š” index.html ํŽ˜์ด์ง€๋ฅผ ๋งคํ•‘ํ•˜๋„๋ก ํ•˜๋ฉด ๋œ๋‹ค.
    ==> ๋ชจ๋“  ์š”์ฒญ์€ ์„œ๋ฒ„์—์„œ index.html ์„ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ํŽ˜์ด์ง€์— ๋‚ด์žฅ๋œ SPA ๋ผ์šฐํŒ… ๊ธฐ๋Šฅ์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.
  • vue ํ”„๋กœ์ ํŠธ๋ฅผ ๋นŒ๋“œํ•˜์—ฌ SpringBoot ํ”„๋กœ์ ํŠธ์˜ ์ •์  ์ž์›์„ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒฝ๋กœ์— ๋นŒ๋“œ๋œ ํŒŒ์ผ๋“ค์„ ๋„ฃ์–ด์ค€๋‹ค.

1. SpringBoot

ErrorHandler ์„ค์ •

๋ฐฉ๋ฒ• 1

  • application.properties ์„ค์ • ์‹œ

  • Controller ์—์„œ static ์—†์ด /index.html ๋งŒ ํ‘œ์‹œ ๊ฐ€๋Šฅ

๋ฐฉ๋ฒ• 2

  • application.properties ์„ค์ • ์•ˆํ•  ์‹œ /static/index.html ๋ช…์‹œํ•ด์•ผํ•œ๋‹ค.

์ด๋ ‡๊ฒŒํ•˜๋ฉด 404 ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ์‹œ ๋นŒ๋“œ๋œ SPA ์•ฑ index.html ๋กœ ๋ฐ˜ํ™˜ ํ•œ๋‹ค.

resources ํด๋” ๊ตฌ์กฐ

2. Vue.js

vue.config.js ์„ค์ •

module.exports = {
    outputDir: "../src/main/resources/static",
    indexPath: "../static/index.html",
    devServer: {
        overlay: false,
        historyApiFallback: true,
        proxy: {
            '/': {
                target: 'http://localhost:8080/',
                changeOrigin: true,
                secure: false
            }
        }
    },

}

SpringBoot ์˜ ์ •์  ํด๋”์— ๋นŒ๋“œ ๋˜๋„๋ก path ๋ฅผ ์ž˜ ์ง€์ •ํ•ด์•ผํ•œ๋‹ค.

์ด๋ ‡๊ฒŒ ๊ฐ„๋‹จํ•˜๊ฒŒ๋งŒ ์„ธํŒ…ํ•˜๋ฉด ์ƒˆ๋กœ๊ณ ์นจ ๋˜๋Š” URL์„ ์ง์ ‘ ์ž…๋ ฅํ•ด๋„ ์„œ๋ฒ„์—์„œ ๋ฐ˜ํ™˜ํ•œ index.html ์—์„œ ๋ผ์šฐํŒ…ํ•˜์—ฌ ํŽ˜์ด์ง€๋ฅผ ์ฐพ์•„์ค€๋‹ค.

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€