사이트맵
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}