Sitemaps

建立自動產生的Sitemap檔案,以供您的 robots.txt. 這有助於SEO和新內容的探索。 AEM可以產生三種型別的網站地圖:沒有任何設定、僅根據查詢索引或手動網站地圖設定。

不使用任何設定來建立Sitemap

如果您未執行任何動作,您會在中看到您的網站地圖 sitemap.xml 並在中擁有Sitemap索引 sitemap.json. 它將包含您所有已發佈檔案的清單。

如果您一開始使用其他型別的Sitemap,並且想要切換至此型別,您必須刪除 helix-sitemap.yaml 設定檔案 — 在GitHub中手動定義或自動產生 — 並重新索引您的網站。

用於外部URL的網域名稱

若要自訂用於建立外部URL的網域,請新增名為的屬性 hostcdn.prod.host 在您的專案設定中(已命名) .helix/config 使用Google Drive做為後端或 .helix/config.xlsx 並預覽該檔案,以啟動它。

根據索引產生Sitemap設定

請參閱檔案 索引 以進一步瞭解索引。 為了根據索引產生Sitemap設定,請確保您已設定初始查詢索引,如該處所解釋。 這將會在下列位置產生網站地圖:

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

以及位於以下位置的網站地圖設定:

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

建議您建立 sitemap-index.xml 此檔案會參照您的所有Sitemap,並將其保留在github存放庫中的專案程式碼中。 如此一來,隨著專案擴展,即可輕鬆新增網站地圖。

手動設定Sitemap設定

如果您需要比產生的Sitemap設定檔案更多的自訂專案,您可以複製其內容,並將其貼到名為的檔案中 helix-sitemap.yaml 在專案的根資料夾中。

注意: 使用手動設定的索引和Sitemap時(例如,您的程式碼存放庫包含helix-query.yaml和helix-sitemap.yaml檔案),您的索引定義必須包含robots屬性,以確保Sitemap排除的頁面具有 robots: noindex 中繼資料。 使用自動產生的索引定義時,只需遵循 索引檔案 所以這些頁面會從索引中排除。

以下小節包含支援的網站地圖型別。

簡易網站地圖

以下是簡單的 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

多個Sitemap

通常網站的每個區段和/或每個國家或語言都有Sitemap。 AEM支援網站地圖,包括相應的 hreflang 引用。 在以下範例中,我們假設索引和Sitemaps XML檔案之間有一對一的對應。

 sitemaps:
   example:
     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
     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}

在產生的Sitemap中,英文子樹狀結構中的所有專案都會有一個額外的hreflang替代專案 x-default.

為一個子樹狀結構指定多個凸緣

有時候,需要將多個凸緣對應至一個語言子樹狀結構,例如,假設我們要在產生的網站地圖中顯示下列內容:

<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>

Sitemap來源中的每個頁面應該只會出現一次,但會有多個與其關聯的替代凸緣。 若要達到此目的,您應該在 hreflang 屬性:

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

多個索引彙總成一個Sitemap

在某些情況下,比分散的小型Sitemap更容易擁有單一較大的Sitemap,尤其是因為每個網站可以提交至搜尋引擎的Sitemap有所限制。

下列範例說明如何將數個個別索引彙總至單一Sitemap。

 sitemaps:
   example:
     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}

使用相同的目的地,就可以將多個小型網站地圖合併為一個大型網站地圖。

包含其他Sitemap作為輸入

在混合情境中,並非網站地圖中的所有語言都是在AEM中管理的,您可以透過指定XML路徑作為來源來包含其他語言樹狀結構的網站地圖,如下所示:

sitemaps:
   example:
     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將透過以下方法判斷英文Sitemap URL的替代方案:使用解構外部Sitemap中的法文對應專案 alternate 定義。

recommendation-more-help
10a6ce9d-c5c5-48d9-8ce1-9797d2f0f3ec