[스프링부트, 스프링] 구글 사이트맵(Google Sitemaps) 자동생성하기, xml 반환

작성자 : 조회수 :

먼저 구글의 sitemap에 관해 간단하게 알아본다

 

사이트 맵이란?

 

-       사이트에 있는 페이지, 동영상 및 기타 파일과 그 관계에 관한 정보를 제공하는 파일입니다.

-       Google과 같은 검색엔진은 이 파일을 읽을 읽고 좀더 효율적으로 크롤링 합니다!

-       마지막 페이지의 업데이트 시간, 페이지의 대체언어버전 등등 관련정보를 제공해줄 수도 있습니다.

 

즉 엄청 간단하게 말하면 Google의 검색엔진을 통해 사용자들이 검색했을 때 Google에서 대부분의 사이트를

찾을 수 있도록 해주는 말 그대로 안내 지도 같은 것 입니다.

 

여기서 중요한 건 




한 줄 요약 : 안 해도 상관은 없지만 만들어서 제출한다고 해서 손해 볼 꺼 없음!

 

그래서 만들기로 했습니다.




직접 만들기 앞서 https://www.xml-sitemaps.com/ 에서 링크만 올리면 자동으로 만들어준다고 해서

 

뽑아봤더니 




이런 식으로 간편하게 뽑아주는걸 확인할 수 있다.

 

하지만 구글 검색 센터의 문서를 보면





더 이상 사용하지 않는다고 하니 참고해두자!

 

그리고 매번 사이트의 새로운 글이 업데이트되거나 변경될 때 마다 저렇게 뽑아서 사용할 수 없기도 하니깐

 

Googlesitemap xml파일을 요청할 때마다 자동으로 새로 갱신해서

 

값을 전달하는 자동화를 만들고 싶어졌다.

 

 

서론이 길었지만 바로 들어가보자



먼저 Google 에서 제시한

 

가장 기본이 되는 형식을 보자




일단 형식에 맞춰서 xml 을 반환하는 코드를 짜봤습니다


import lombok.AllArgsConstructor;

import lombok.Data;

import lombok.NoArgsConstructor;

 

import java.util.Date;

 

@Data

@AllArgsConstructor

@NoArgsConstructor

public class Url {

    private String loc;

    private Date lastmod;

 

}



import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
 
import javax.xml.bind.annotation.*;
import java.util.List;
 
@Data
@AllArgsConstructor
@NoArgsConstructor
@XmlRootElement(name = "urlset")
@XmlAccessorType(XmlAccessType.FIELD)
public class UrlSet {
 
    @XmlAttribute(name = "xmlns")
    private String xmlns;
 
    @XmlElement(name = "url")
    private List<Url> url;
 
 
 
}





결과




잘 뜨는 것을 확인할 수 있지만

내가 원하는 것은 자동화였다 즉

 

모든 사이트의 페이지를 전부다 알아서 sitemap에 올리는 게 목표

 

 

저렇게 하나씩 입력해서 좋을 게 없으니 수정해보자

 

내가 생각한 방법은 간단합니다.

 

일단 기본이 되는




이런 주소들을 제외한

 

모든 게시판 글들을 가져오기 위해

 

 

이렇게 간단한 쿼리 문을 작성하고



아래 사진처럼 DB에서 가져온 모든 값들을 loc 값에 추가해주면


아래와 같은 결과 값을 얻어낼 수 있다.



[정리]

 

구글에서 sitemap을 요청할 때 마다

 

알아서 sitemap.xml파일을 자동생성해주는 간단한 서비스를 작성했습니다.


[최종결과]