Tech Stock logo Tech Stock

휴고 블로그는 sitemap.xml을 자동생성하는데
기본 자동생성의 경우에는
tag나 search 혹은 contact같은 굳이 생성하지 않아도 되는 페이지 마져도
sitemap.xml에 자동생성하여 담는다.

여기서 한가지 문제가 발생하는데

만약 robots.txt를 커스터마이징 해서
disallow : /search 라고 해놓으면

구글 서치 콘솔에서 문제가 발생했다고 오류를 수정하는 메세지를 보게 된다.

원인은 다음과 같다.

서치콘솔 입장에서
당신의 사이트를 크롤러가 sitemap.xml 기준으로 크롤링을 해갔다.
크롤링 해 간 데이터에는 site.com/search 라는 데이터가 존재했다.
그런데 robots.txt를 살펴보니 disallow : /search 라고 확인이 된다.
sitemap.xml을 보니 search라는 페이지를 크롤링해라 robots.txt를 보니 하지말라 도대체 뭐가 맞냐?

이런 의미가 되는 것이다.

그렇기 때문에 robots.txt를 커스터마이징 했을 경우에는
그것과 마찬가지로 sitemap.xml또한 커스터마이징 생성을 해줘야 한다.

방법은 다음과 같다.

\layouts\_default

라는 디렉토리에 sitemap.xml의 기본형을 작성한다.

sitemap.xml의 기본형은 다음과 같다.


{{ printf "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\" ?>" | safeHTML }}
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
  xmlns:xhtml="http://www.w3.org/1999/xhtml">
{{ range .Data.Pages }}{{ if .IsPage }}
  <url>
    <loc>{{ .Permalink }}</loc>{{ if not .Lastmod.IsZero }}
    <lastmod>{{ safeHTML ( .Lastmod.Format "2006-01-02T15:04:05-07:00" ) }}</lastmod>
{{ end }}  </url>
{{ end }}{{ end }}
</urlset>

간단한 설명


{{ range .Data.Pages }}{{ end }}
휴고가 생성하는 모든 페이지를 루프로 돌려서 sitemap.xml을 작성한다

{{ if .IsPage }}{{ end }}
태그 등의 링크가 메인이 되는 페이지일 경우에는 sitemap.xml에 작성하지 않는다

{{ if not .Lastmod.IsZero }}{{ end }}
페이지에 lastmod(마지막 수정일)가 없을 경우에는  lastmod태그를 출력하지 않는다. 

이렇게 작성하면 tag / search / contact등과 같이 불필요한 페이지는 sitemap.xml생성시에 제외하게 된다.