사이트맵

robots.txt에서 참조할 자동 생성된 사이트 맵 파일을 만듭니다. 이는 SEO 및 새 콘텐츠 검색에 도움이 됩니다. AEM은 구성 없이 쿼리 인덱스만 기반 또는 수동 사이트 맵 구성을 기반으로 세 가지 유형의 사이트 맵을 생성할 수 있습니다. 단일 사이트 맵은 크기가 50,000개의 URL과 50MB(압축되지 않음)로 제한되어야 합니다. 제한을 참조하십시오.

구성 없이 사이트 맵 만들기

작업을 수행하지 않으면 sitemap.xml에서 사이트 맵이 표시되고 sitemap.json에서 사이트 맵 색인이 제공됩니다. 여기에는 게시된 모든 문서의 목록이 포함됩니다.

다른 유형의 사이트 맵으로 시작하여 이 유형으로 전환하려면 GitHub에서 수동으로 정의하거나 자동으로 생성된 helix-sitemap.yaml 구성 파일을 삭제하고 사이트를 다시 인덱싱해야 합니다.

외부 URL에 사용된 도메인 이름

외부 URL을 만드는 데 사용되는 도메인을 사용자 지정하려면 프로젝트 구성에 host 또는 cdn.prod.host(Google 드라이브를 백엔드로 사용하거나 Sharepoint에서 .helix/config.xlsx을(를) 사용할 때 .helix/config) 속성을 추가하고 해당 파일을 미리 보고 활성화합니다.

인덱스를 기반으로 사이트 맵 구성 생성

인덱싱에 대한 자세한 내용은 인덱싱 문서를 참조하십시오. 색인을 기반으로 사이트 맵 구성을 생성하려면 여기에 설명된 대로 초기 쿼리 색인을 이미 설정했는지 확인하십시오. 이 경우 다음 위치에 사이트 맵이 생성됩니다.

https://<branch>--<repo>--<owner>.hlx.page/sitemap.xml

및 다음 위치에 사이트 맵 구성:

https://<branch>--<repo>--<owner>.hlx.page/helix-sitemap.yaml

모든 사이트 맵을 참조하는 sitemap-index.xml 파일을 만들고 이를 github 리포지토리에 프로젝트 코드의 일부로 유지하는 것이 좋습니다. 이렇게 하면 프로젝트가 확장될 때 새 사이트 맵을 쉽게 추가할 수 있습니다.

사이트 맵 구성의 수동 설정

생성된 사이트 맵 구성 파일에서 제공하는 것보다 더 많은 사용자 지정이 필요한 경우 해당 내용을 복사하여 프로젝트의 루트 폴더에 있는 helix-sitemap.yaml 파일에 붙여 넣을 수 있습니다.

참고: 수동으로 구성된 인덱스 및 사이트 맵(예: 코드 리포지토리에 helix-query.yaml 및 helix-sitemap.yaml 파일이 포함됨)을 사용하는 경우 사이트 맵에서 robots: noindex 메타데이터가 있는 페이지가 제외되도록 인덱스 정의에 robots 속성이 포함되어야 합니다. 자동 생성된 인덱스 정의를 사용하는 경우 해당 페이지가 인덱스에서 제외되도록 인덱싱 문서의 권장 사항을 따르십시오.

다음 섹션에는 지원되는 사이트 맵 유형이 포함되어 있습니다.

단순 사이트 맵

다음은 간단한 helix-sitemap.yaml입니다. 사이트맵에 표시해야 하는 모든 페이지를 포함하는 단일 인덱스를 가정합니다.

 sitemaps:
   example:
     source: /query-index.json
     destination: /sitemap-en.xml

마지막 수정 날짜를 사이트 맵의 URL에 포함하려면 형식을 포함하는 lastmod 속성을 구성에 추가하십시오.

 sitemaps:
   example:
     source: /query-index.json
     destination: /sitemap-en.xml
     lastmod: YYYY-MM-DD

여러 사이트 맵

사이트의 섹션별 및/또는 국가별 또는 언어별로 사이트 맵을 갖는 것이 일반적입니다. AEM은 해당 hreflang개의 참조를 포함하는 사이트 맵을 지원합니다. 다음 예제에서는 인덱스와 사이트 맵 XML 파일 간에 일대일 매핑이 있다고 가정합니다.

 sitemaps:
   example:
     lastmod: YYYY-MM-DD
     languages:
       en:
         source: /en/query-index.json
         destination: /sitemap-en.xml
         hreflang: en
       fr:
         source: /fr/query-index.json
         destination: /sitemap-fr.xml
         hreflang: fr
         alternate: /fr/{path}

영어 및 프랑스어 섹션에 공통 접미사를 공유하는 두 페이지가 있으면 서로 관련되어 있으므로 예를 들어, 영어 섹션에 /welcome 페이지가 있고 프랑스어 섹션에 /fr/welcome 페이지가 있으면 /sitemap-en.xml의 결과 항목은 다음과 같습니다.

<url>
  <loc>https://wwww.mysite.com/welcome</loc>
  <xhtml:link rel="alternate" hreflang="en" href="https://wwww.mysite.com/welcome"/>
  <xhtml:link rel="alternate" hreflang="fr" href="https://wwww.mysite.com/fr/welcome"/>
</url>

/sitemap-fr.xml에서 유사한 항목을 사용할 수 있습니다.

수동으로 기본 언어 지정

페이지의 대체 버전이 있지만 공통 접미사를 사용하여 식별하지 못하는 경우가 있을 수 있습니다. 경로가 변경되지 않아야 하는 기존 웹 사이트를 포팅하기 때문일 수 있습니다. 이 경우 문서의 메타데이터에서 대체 위치에 대한 primary-language-url을(를) 지정할 수 있습니다.

기본 언어가 영어이고 영어 섹션에 /welcome 페이지가 있고 프랑스어 섹션에 /fr/bienvenu페이지가 있으며, 후자는 전자의 대체 버전이라고 가정해 보겠습니다.

먼저 해당 정보를 메타데이터의 /fr/bienvenu에 있는 문서에 추가합니다.

일괄 메타데이터와 같이 글로벌 metadata 시트에도 추가할 수 있습니다.

그런 다음 인덱싱된 속성 primary-language-url을(를) 프랑스어 인덱스에 추가합니다.

 primary-language-url:
   select: head > meta[name="primary-language-url"]
   value: attribute(el, "content")

마지막으로 프랑스어 페이지를 다시 게시하고 사이트 맵을 다시 빌드합니다.

기본 언어 지정

또 다른 일반적인 요구 사항은 여러 언어를 사용하는 사이트 맵에 대한 기본 언어를 지정하는 것입니다. 사이트 맵에 속성 default을(를) 추가하여 이를 수행할 수 있습니다.

 sitemaps:
   example:
     default: en
     lastmod: YYYY-MM-DD
     languages:
       en:
         source: /en/query-index.json
         destination: /sitemap-en.xml
         hreflang: en
       fr:
         source: /fr/query-index.json
         destination: /sitemap-fr.xml
         hreflang: fr
         alternate: /fr/{path}

결과 사이트 맵에서 영어 하위 트리의 모든 항목에는 hreflang x-default을(를) 사용하는 추가 대체 항목이 있습니다.

하나의 하위 트리에 대해 여러 hrefLang 지정

경우에 따라 여러 hrefLang을 하나의 언어 하위 트리에만 매핑해야 합니다. 예를 들어 결과 사이트 맵에 다음 항목이 표시되도록 할 수 있습니다.

<url>
 <loc>https://myhost/la/page</loc>
 <xhtml:link rel="alternate" hreflang="es-VE" href="https://myhost/la/page"/>
 <xhtml:link rel="alternate" hreflang="es-SV" href="https://myhost/la/page"/>
 <xhtml:link rel="alternate" hreflang="es-PA" href="https://myhost/la/page"/>
</url>

사이트 맵 소스의 모든 페이지는 정확히 한 번만 표시되어야 하지만 여러 대체 hreflangs가 연결되어 있습니다. 이렇게 하려면 hreflang 속성에 언어 배열을 지정해야 합니다.

 sitemaps:
   example:
     lastmod: YYYY-MM-DD
     languages:
       la:
         source: /la/query-index.json
         destination: /sitemap-la.xml
         hreflang:
           - es-VE
           - es-SV
           - es-PA

여러 색인이 하나의 사이트맵으로 집계됨

특히 사이트당 검색 엔진에 제출할 수 있는 사이트맵의 한계가 있어 파편화된 작은 사이트맵보다 더 큰 사이트맵을 한 개 갖기 쉬운 경우가 있다.

다음 예에서는 여러 개별 인덱스를 단일 사이트 맵으로 집계하는 방법을 보여 줍니다.

 sitemaps:
   example:
     lastmod: YYYY-MM-DD
     languages:
       dk:
         source: /dk/query-index.json
         destination: /sitemap.xml
         hreflang: dk
         alternate: /dk/{path}
       no:
         source: /no/query-index.json
         destination: /sitemap.xml
         hreflang: no
         alternate: /no/{path}

동일한 대상을 사용하여 여러 개의 작은 사이트맵을 하나의 더 큰 사이트맵으로 결합할 수 있습니다.

다른 사이트맵을 입력으로 포함

사이트 맵의 모든 언어가 AEM에서 관리되지 않는 혼합 시나리오에서는 다음과 같이 XML 경로를 소스로 지정하여 다른 언어 트리의 사이트 맵을 포함할 수 있습니다.

sitemaps:
   example:
     lastmod: YYYY-MM-DD
     languages:
       en:
         source: /en/query-index.json
         destination: /sitemaps/sitemap-en.xml
         hreflang: en
       fr:
         source: https://www.mysite.com/legacy/sitemap-fr.xml
         destination: /sitemaps/sitemap-fr.xml
         hreflang: fr
         alternate: /fr/{path}

이 예제에서는 외부 프랑스어 사이트 맵을 사용하여 모든 사이트 맵 위치를 계산합니다. AEM은 alternate 정의를 사용하여 외부 사이트 맵에서 프랑스어 사이트 맵 URL을 해체하여 영어 사이트 맵 URL의 대안을 결정합니다.

사이트 맵의 모든 위치에 확장 추가

모든 위치에 확장명(예: .html)을 지정하려 하고 쿼리 인덱스에서 helix-sitemap 시트를 생성하여 수식을 파생할 수 없는 시나리오에서는 extension 속성을 사용하여 모든 언어 또는 개별 언어에 확장을 추가할 수 있습니다.

sitemaps:
   example:
     lastmod: YYYY-MM-DD
     extension: .html
     languages:
       en:
         source: /en/query-index.json
         destination: /en/sitemap.xml
         hreflang: en
       fr:
         source: /fr/query-index.json
         destination: /fr/sitemap.xml
         hreflang: fr
         alternate: /fr/{path}
recommendation-more-help
10a6ce9d-c5c5-48d9-8ce1-9797d2f0f3ec