GHOST 한글 SLUG 사용할때 AMP 404 오류 해결
현상
관리자에서 AMP설정일 켜놨으면, url 뒤에 /amp 를 붙임으로써 amp 페이지를 확인할 수 있지만,
https://www.birdspring.com/aws-ec2-로-내-서버-구축하기/amp/
에 접속하면 404 페이지가 노출이 되었다.(지금은 잘 될꺼다.)
원인파악
혹시나 해서 URL이 영어로만 되어있는 포스트에 /amp를 붙여서 호출해봤다.
https://www.birdspring.com/gunicornservice-error/amp
amp페이지가 잘 뜬다.
한글slug문제라는 확신이 90%정도 든다.
문제해결
고스트가 설치된 서버로 접근해서 vi로 파일하나를 수정한다.
vi /var/www/blog/versions/5.2.4/core/server/services/url/UrlService.js
아래 펑션을 수정한다.
getPermalinkByUrl(url, options) {
options = options || {};
// const object = this.getResource(url, {returnEverything: true}); // 원본은 주석처리한다.
const object = this.getResource(decodeURI(url), {returnEverything: true}); // decodeURI로 url부분을 감싸준다.
if (!object) {
return null;
}
const permalink = _.find(this.urlGenerators, {uid: object.generatorId}).permalink;
if (options.withUrlOptions) {
return urlUtils.urlJoin(permalink, '/:options(edit)?/');
}
return permalink;
}
이렇게 하면 일단 한글slug로 된 포스트들도 amp가 잘 노출된다.
끗
끝.