URL에서 #(해시)이 없는 일반적인 주소 형식을 사용하도록 하는 모드
✔ 기본 모드 (해시 모드, createWebHashHistory)
<https://example.com/#/about>
✔ 히스토리 모드 (createWebHistory)
<https://example.com/about>
createMemoryHistory() 사용서버에서 존재하지 않는 경로 요청이 들어오면
index.html로 리디렉션하도록 설정해야 한다.
이렇게 하면 Vue 앱이 다시 로드되면서 올바른 페이지를 보여줄 수 있다.
⇒ 히스토리 모드의 문제점
/about 페이지를 모르기 때문!/about을 직접 입력하면 서버는 해당 파일을 찾을 수 없다고 판단사용자가 존재하지 않는 페이지에 접근했을 때 보여주는 "페이지를 찾을 수 없음" 화면
src/router/index.js
import NotFound from '@/pages/NotFound.vue';
const router = createRouter({
history: createWebHistory(),
routes: [
{ path: '/', component: Home },
{ path: '/about', component: About },
{ path: '/:pathMatch(.*)*', component: NotFound }, // 404 처리(마지막에 배치)
// { path: '/:paths(.*)*', component: NotFound }도 동일한 기능이지만 Vue 4에서는 :pathMatch(.*)*가 공식적인 방식
],
});
→ 존재하지 않는 경로로 이동하면 자동으로 NotFound.vue를 보여줌
🌟 히스토리 모드를 사용하면 깔끔한 URL을 만들 수 있지만, 404 문제를 해결하려면 서버 설정과 404 라우트를 함께 사용해야 한다!