티스토리 뷰
한줄요약: vue-router를 histroy 모드로 변경 후, Prereding으로 빌드하도록 vue.config.js 변경
이번에는 Prerendering으로 사이트를 빌드하여 검색엔진에 노출시키는 법에 대해 작성하겠습니다.
기타 방법은 이전글(vue로 개발한 페이지 검색엔진에 노출시크는 방법)을 참고해 주세요.
Prerendering 은?
프리렌더링은 웹사이트를 빌드할때 지정한 특정 페이지를 미리 렌더링해서 저장하는 기술입니다. 구현이 쉽고 빌드 타임에 모든 처리가 끝나므로 런타임에 추가로 부담이 들지 않습니다만, 빌드 타임은 당연스럽게 늘어나게 됩니다.
단, vue-router 이 hash 모드(xxx.com/#/home 과 같이 #이 router에 붙는 방식)가 아니라 history (xxx.com/home ) 여야만 합니다. (이 조건은 다른 방법을 쓰더라도 동일합니다.)
1. history 모드 적용 방법
- vue-router 가 import 되어 있는 파일에 router 항목을 찾아 아래와 같이 수정합니다.
const router = new VueRouter({
mode: 'history',
routes: [...]
})
위와 같이 적용후 서버를 재시작 하고 주소 경로에서 #이 빠져있다면 제대로 적용한 것입니다.
2. prerender-spa-plugin 설치
다음 plugin을 설치합니다.
npm install --save-dev prerender-spa-plugin
설치 후 vue.config.js 파일을 수정합니다. (vue cli 3.0 기준 )
/* vue.config.js */
const path = require('path');
const PrerenderSpaPlugin = require('prerender-spa-plugin');
const productionPlugins = [
new PrerenderSpaPlugin({
staticDir: path.join(__dirname, 'dist'),
routes: [
"/",
"/board/1",
"/board/2",
],
renderer: new PrerenderSpaPlugin.PuppeteerRenderer({
renderAfterElementExists: '#app'
}),
}),
];
module.exports = {
lintOnSave: false,
configureWebpack: (config) => {
if (process.env.NODE_ENV === 'production') {
config.plugins.push(...productionPlugins);
}
},
};
필요하다면 (게시글을 포함한) 모든 페이지를 routes array에 추가할 수 있도록 코드를 작성하신 뒤 vue.config.js 파일을 저장합니다.
빌드 후에는 dist 경로 밑에 routes 배열에 지정한 페이지의 디렉토리가 생기고 index.html 이 해당 디렉토리마다 생성된것을 확인 가능합니다.
여기까지 진행되면 추가 작업없이 검색엔진에서 해당 글이 노출되는 것을 확인 할 수 있습니다.
** 추가 **
AWS S3-CloudFront 조합으로 페이지를 제공하고 구글에서 페이지를 가져가지 못하는 경우 CloudFront에서 디렉토리를 링크할 때 trailing slash 를 추가하시길 추천드립니다. https://xxx.com/board 이면 cloudfront는 https://xxx.com/board/ 로 redirection을 하는데 이런 과정때문에 구글에서 페이지를 못가져 가는 경우가 발생합니다.
감사합니다.
'dev > vue' 카테고리의 다른 글
vue 속도 개선 (1) - lazy loading (0) | 2020.01.16 |
---|---|
vue 페이지에 구글 애널리틱스 적용 (0) | 2020.01.06 |
AWS EC2 에 vpn 설치하고 보안그룹 적용 (1) | 2019.11.26 |
vue에서 json 프린트 하기 (0) | 2019.03.27 |
vue로 개발한 페이지 검색엔진에 노출시키는 법 (0) | 2019.03.19 |
- Total
- Today
- Yesterday
- vue mobile
- 플러터 디버그
- 다국어
- vue android
- 한글 like
- ag grid
- v-iterator
- Galaxy Emulator
- 갤럭시 에뮬레이터
- vue ios
- vs code flutter
- dynamic component
- 로그
- Android Studio Emulator
- 긴급재난지원금
- vs code fultter debug
- ag-grid
- nativescript-vue
- Add AVD
- AVD
- i18n
- vue
- 경로 초기화
- MariaDB
- 에뮬레이터
- session stroage
- vuex-persistedstate
- ec2
- Vue 다국어
- aws
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |