[태그:] sitemap

  • Sitemap이 필요없는 웹사이트 만들기

    검색엔진의 자료 수집 원리

    검색엔진은 수집한 웹주소와 사이트맵을 통해서 크롤러(스파이더)를 통해 페이지를 방문합니다. 방문한 페이지를 읽어 해당 페이지의 내용을 수집합니다. 또한 그 페이지에 기록된 링크를 읽어들여 다시 방문하여 콘텐츠를 수집하고 분석하여 그 다음 방문할 주소를 읽어들입니다.

    우리는 이러한 검색엔진의 행동을 이해하고 우리가 만든 웹사이트를 검색엔진이 모두 읽어들여(크롤링) 인덱싱하기를 기대하며 사이트맵을 만들어 검색엔진에 제출하는 작업을 진행하였습니다.

    하지만 실제로 검색엔진이 작동원리를 알고 있다면 꼭 사이트맵을 제출할 필요가 없다는 것도 눈치 채셨을겁니다. 우리가 실제로 만드는 웹사이트가 올바로 내부적인 링크를 포함하고 있다면 사이트맵 없이도 우리의 웹사이트 모든 페이지는 시간이 지나면 모두 크롤링되어 인덱스가 만들어지게 됩니다.

    웹페이지 하단 Footer에 수 많은 링크들을 표시해 둔 해외 웹사이트를 보셨던 기억이 나실지도 모르겠습니다. 그 링크 묶음들 역시 SEO를 위한 작은 노력입니다.

    Contents Silo

    여기서 중요한 포인트는 모든 링크를 포함한다는 것입니다. 크롤러(스파이더)가 링크를 타고 접근 가능하도록 모든 콘텐츠의 하이라키 구조(hierarchy structure)를 구성하여야 합니다. 하이라키 구조를 계획하다 보면 우리는 다시 이 콘텐츠들이 콘텐츠 사일로를 구성한다는 것을 알게됩니다. 콘텐츠 사일로(contents silo)란 곡물을 종류별로 모아둔 큰 곡물 저장 시설물을 사일로라고 하는데 콘텐츠를 이렇게 종류별로 묶음단위로 분리해 둔것을 칭합니다.

    세계 최대 벽화의 인천항 Silo
    인천항의 Silo, 해당 시설에 그려진 세계 최대 벽화로 기네스북에 등재되었다, 출처 인천일보

    또한 이러한 콘텐츠 사일로를 만들기 위해서는 각각의 콘텐츠를 분류하여 각각으로 안내하는 무엇인가가 필요하다는 것을 알게 됩니다. 각각의 페이지 사이의 이동을 좀더 자연스럽게 구현하기 위해서 우리는 Main Page 와 Contents Page 사이에 링크들을 보관하고 길을 안내할 중간자, 일명 Sub Main Page의 존재가 필요하게 됩니다. 또한 이러한 Sub Main이 사용자만이 아닌 검색엔진의 크롤러에게도 안내자 역할을 훌륭하게 해낼 수 있다는 것 또한 예상해 볼 수 있습니다.

    우리는 Main Page에 제공된 GNB(Global Navigation bar)를 통해 각각의 Sub main을 방문한 크롤러를 생각해볼 수 있습니다. Sub Main Page는 각각의 콘텐츠를 가지고 있는 Page로의 링크 외에도 각각의 관계를 알려줄 수 있는 잘 정리된 안내문과 직관적으로 다음 콘텐츠를 선택할 수 있도록 하는 이미지 등을 포함하고 있을 것입니다. 당연히 해당 페이지에 소개되고 있는 콘텐츠는 하나의 유사성을 가진 콘텐츠 묶음-Silo를 구성하고 있을 것입니다.

    코너스톤 페이지 (Cornerstone Page)

    최근의 검색엔진(아마도 구글…이겠죠)은 단순 키워드가 나열되어 있는 페이지보다 일관된 주제에 대해서 상세한 내용을 포함한 상대적으로 풍부한 콘텐츠를 상위에 랭크하는 경향이 두드러지고 있습니다. 이에 대한 대응으로 최적화의 한 방법으로 상위 랭크를 의도적으로 노리는 페이지를 만들어 적극적으로 이러한 정책에 대응하려고 노력합니다. 해당 주제를 중심으로 비교적 많은 콘텐츠를 가득 담은 페이지를 만들어 상위 랭크에 올려 방문을 유도하는 페이지를 코너스톤 페이지 (Cornerstone Page)라고 합니다. 이러한 코너스톤 페이지는 검색엔진을 통한 사용자의 랜딩 페이지 (landing page)로 다음 행동을 유도하게 됩니다. 당연히 서브 페이지로의 많은 링크를 포함하게 됩니다.

    더 나은 SEO를 위한 코너스톤

    콘텐츠 사일로 – 서브 메인 페이지 – 코너스톤 페이지 뭐라고 부르든 어떤 의미를 가지든 우리의 목적은 검색엔진을 통해 방문자를 늘리는 것입니다. 검색엔진에서 우리의 페이지가 높은 순위로 노출되고 그에 따라 클릭을 유도할 수 있다면 역할이 중요한 것이지 그 명칭이 중요한 것이 아닙니다.

    서비스 운영중 특별히 코너스톤 페이지를 신규로 구성하는 것보다 처음 사이트를 설계하는 단계에서 Sub Main Page를 코너스톤 페이지로서 역할을 하도록 구성하여 자연스러운 검색 노출과 상위 랭크를 목표하는 것을 추천합니다. 또한 서비스의 종류에 따라 별도의 Silo를 구성할 수 있는 테마를 선정하여 해당 테마의 Silo를 구성하며 추가적인 코너스톤 페이지를 생성하는 것을 적극적으로 추진하는 것 또한 좋은 전략입니다. 예를 들어 콘텐츠와 함께 하위 페이지들의 추천 순위나 선호도를 포함한 구성을 통해 하위 링크들을 자연스럽게 노출하여 코너스톤의 역할을 감당시키는 것입니다.

  • sitemap.html? sitemap.xml 사이트맵!

    Sitemap?

    Sitemap은 웹마스터가 크롤링에 사용할 수 있는 사이트의 페이지에 대한 정보를 검색 엔진에 알리는 손쉬운 방법입니다. Sitemap의 가장 간단한 형식은 검색 엔진에서 사이트를 보다 지능적으로 크롤링할 수 있도록 각 URL에 대한 추가 메타데이터(마지막 업데이트된 날짜, 변경 빈도, 사이트의 다른 URL에 상대적인 중요도)와 함께 사이트에 대한 URL을 나열하는 XML 파일입니다.

    웹크롤러는 보통 해당 사이트 및 기타 사이트의 링크에서 페이지를 검색합니다.Sitemap은 해당 데이터를 보완하여 Sitemap을 지원하는 크롤러가 해당 Sitemap에 있는 모든 URL을 선택하고 관련 메타데이터를 사용하여 이들 URL에 대해 파악할 수 있도록 합니다.Sitemap 프로토콜을 사용하더라도 웹페이지가 반드시 검색 엔진에 포함되는 것은 아니지만 이를 통해 웹크롤러가 귀하의 사이트를 보다 효과적으로 크롤링하기 위한 힌트를 얻을 수 있습니다.

    Sitemap 0.90은 Attribution-ShareAlike Creative Commons License의 약관에 따라 제공되며 Google, Yahoo! 및 Microsoft의 지원을 비롯하여 널리 채택되고 있습니다.

    sitemaps.org 에서 이야기 하는 Sitemap의 의미

    Sitemap 은 사이트의 웹페이지 등을 나열하는 파일로 사이트 콘텐츠 구성을 구글, 네이버, 다음, Bing 등 다양한 검색 엔진에 알리는데 사용되는 파일입니다. 예전에는 웹페이지만을 이야기 했지만 최근에는 사이트에 있는 페이지 외에도, 동영상 및 이미지, 기타 파일과 각 관계에 관한 정보를 제공할 수 있습니다. 검색엔진은 이 파일을 읽고 사이트를 크롤링하여 검색 요청에 대응하기 위한 인덱스를 만들게 됩니다. 쉽게 말해서 사이트맵은 나의 사이트에서 중요하다고 생각하는 페이지와 파일을 검색엔진에 전달하여 검색 결과에 노출되게 하기 위한 기초적인 데이터입니다.

    반대로 이야기하면 나의 웹사이트를 검색엔진에 노출되게 하기 위한 가장 편리한 방법이 사이트맵을 제작하여 검색엔진에 제공하는 것입니다. 조금 딱딱한 내용이지만 이런 사이트맵에 관한 내용은 글로벌 검색엔진 업체들의 협약으로 만들어졌습니다. 반대로 이야기하면 자기들이 좀 더 쉽게 검색할 데이터를 얻기 위해서 만들었다고 봐도 되지만, 그 덕택에 새로운 자료를 검색엔진에 노출하기가 더 용이해지기도 하였습니다. 구글, 야후, 마이크로소프트(빙) 등이 채택한 사이트맵 표준은 sitemaps.org 에 정의되어 있습니다.

    Sitemap 만들기

    <?xml version="1.0" encoding="UTF-8"?>
    <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
       <url>
          <loc>http://www.example.com/</loc>
          <lastmod>2005-01-01</lastmod>
          <changefreq>monthly</changefreq>
          <priority>0.8</priority>
       </url>
    </urlset> 

    위 샘플코드를 보시면 쉽게 이해가 되겠지만 URL(절대경로)과 페이지가 마지막으로 업데이트된 날짜, 페이지 변경 빈도, 페이지의 중요성을 부가 정보로 추가할 수 있습니다. URL 외의 내용은 생략이 가능하며 최근의 매우 똑똑해진 검색엔진(구글 이라든가 google 이라든가..)은 해당 내용이 없어도 자신이 만든 기준으로 크롤링을 하고 중요도를 판단하고 있습니다. 실제로 구글은 공식적으로 <changefreq> 값과 <priority>값은 무시하기 때문에 사이트맵에 넣지 않도록 안내하고 있습니다.

    사이트맵은 위 샘플코드 처럼 XML로 제작하는 것이 일반적입니다. 다만 블로그의 경우 RSS, mRSS, Atom와 같은 표준 feed관리 코드로 검색엔진에 등록이 가능합니다. 그외에 지원하는 포맷은 TEXT입니다. 단순 URL을 한줄에 하나씩 넣은 txt 파일을 사이트맵으로 사용할 수 있습니다. 하지만 대부분의 경우 XML포맷을 이용합니다.

    또한 사이트맵의 XML 파일 안에 별도의 XML을 포함시킬 수 있습니다. 이것은 개발 운영 관점에서 매우 유용합니다. 프로그램으로 등록 / 관리되는 콘텐츠가 있다면(보통은 상품목록과 같은 것들이 해당됩니다.) 해당 콘텐츠의 URL만 별도의 XML로 일단위/주단위/월단위 등 주기적으로 생성하여 관리하고, 고정된 콘텐츠의 URL 묶음의 XML로 별도로 관리하면 굉장히 관리가 편리해 집니다. 또한 이벤트와 같이 freq가 높은 콘텐츠의 경우 daily로 관리한다면 검색엔진에 등록/관리하기가 유용해집니다. 또한 용량이 큰 경우 압축하여 관리할 수 있습니다. 한개의 사이트맵 파일은 50MB, 50,000개 이하의 URL만 가져야 합니다.

    <?xml version="1.0" encoding="UTF-8"?>
      <sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
        <sitemap>
          <loc>http://www.example.com/sitemap1.xml.gz</loc>
        </sitemap>
        <sitemap>
          <loc>http://www.example.com/sitemap2.xml.gz</loc>
        </sitemap>
      </sitemapindex> 

    Sitemap 등록

    사이트맵을 만드는 것은 익숙하지 않은 개발자에게는 꽤 오류를 만드는 작업입니다. 이것은 XML 파일을 만들면서 URL등의 이스케이프 처리가 익숙하지 않아서 발생하는 문제인데 작업 후 인터넷으로 무료 이용 가능한 무료 XML 사이트맵 확인기와 같은 서비스를 이용하여 검사하는 것이 좋습니다.

    사이트맵의 등록은 검색엔진들이 운영하는 search consol, webmaster tools 와 같은 서버스에 등록하거나, 웹 사이트 root에 robots.txt 에 아래 샘플코드와 같이 삽입하여 처리합니다.

    User-agent: *
    Allow: /
    
    Sitemap: http://www.example.com/sitemap.xml

    Sitemap이 필요하지 않은 경우

    하지만 사이트맵 파일이 전혀 필요치 않은 경우도 있습니다.

    1. 사이트의 크기가 적당히 작은 경우, 총 페이지가 500개 이하인 경우 특별히 만들어서 제공할 필요가 없습니다.
    2. 사이트의 모든 페이지들이 유기적으로 링크되어 있어 검색엔진의 크롤러가 직접 접속하여 확인이 가능한 경우
    3. 외부에 알려진 서비스로 제작된 사이트의 경우 (예를 들면 Wix와 같은 경우 별도의 작업이 필요 없습니다.)

    특히 2번의 경우를 주목하여야 합니다. 우리가 만드는 서비스는 내부의 링크를 유기적으로 관리하여 검색엔진이 직접 크롤이 가능하도록 설계할 필요가 있습니다. 기회가 되면 이 내용으로 별도의 내용을 포스팅하겠습니다.