Sitemaps XML 格式

跳至:
XML 標記定義
實體逸出
使用 Sitemap 索引檔
其他 Sitemap 格式
Sitemap 檔案位置
驗證 Sitemap
擴充 Sitemap 通訊協定
通知搜尋引擎檢索器

本文件說明 Sitemap 通訊協定的 XML 配置。

Sitemap 通訊協定格式是由 XML 標記所組成。Sitemap 中的所有資料值都必須是實體逸出。檔案本身必須使用 UTF-8 編碼。

Sitemap 必須:

其他所有標記均為選用的。是否支援這些選用的標記須視搜尋引擎而定。詳細資訊請參閱各搜尋引擎的說明文件。

另外,Sitemap 中所有的 URL 必須來自單一主機,例如 www.example.com 或 store.example.com。如需更多資訊,請參考 Sitemap 檔案位置

XML Sitemap 範例

下列範例顯示僅包含一個 URL 並使用所有選用標記的 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 的範例。

XML 標記定義

可用的 XML 標記如下所述。

屬性 說明
<urlset> 需求條件

壓縮檔案與參照最新的通訊協定標準。

<url> 需求條件

每個 URL 項目的母層標記。剩餘的標記是此標記的子階層。

<loc> 需求條件

網頁的 URL。這個 URL 必須以通訊協定開頭 (例如 http) 並以尾端的斜線結束 (如果您的網頁伺服器有此需求)。此值必須少於 2,048 個字元。

<lastmod> 選用

檔案的最後修改日期。此日期應該採用 W3C 日期時間格式。 必要的話,此格式允許您略過時間的部分,並使用 YYYY-MM-DD。

請注意,日期必須設置為鏈接頁面的最後修改日期,而不是站點地圖生成的日期。

請注意,此標記與伺服器可傳回的 If-Modified-Since (304) 標頭不同,且搜尋引擎可能會以不同的方式使用這兩種來源的資訊。

<changefreq> 選用

網頁可能變更的頻率。此值會提供一般的資訊給搜尋引擎,而且與它們檢索網頁的頻率不完全相關。有效值如下:

  • always
  • hourly
  • daily
  • weekly
  • monthly
  • yearly
  • never

"always" 值應該用來描述會隨著每次存取而變更的文件。"never" 值應該用來描述已封存的 URL。

請注意,此標記的值會當做提示而非指令。即使搜尋引擎的搜尋器在做決定時可能會參考此資訊,但它們檢索標記為 "hourly" 網頁的頻率相較之下會偏低,而它們檢索標記為 "yearly" 網頁的頻率則可能較高。搜尋器可能會定期檢索標記為 "never" 的網頁,以便處理這些網頁的臨時變更。

<priority> 選用

此 URL 的優先順序是相對於您網站上的其他 URL。有效值的範圍為 0.0 到 1.0。此值不會影響您的網頁與其他網站網頁的比較,而只是讓搜尋引擎知道您認為哪些網頁對檢索器來說最為重要。

網頁的預設優先順序為 0.5。

請注意,您指定給網頁的優先順序,並不會影響您的 URL 在搜尋引擎之結果網頁上的排名。搜尋引擎可能會使用此資訊在同一個網站上的 URL 間做選擇,因此您可以使用此標記來提高最重要的網頁出現在搜尋索引中的可能性。

同時請注意,將您網站中所有的 URL 都指定為高優先順序並沒有任何助益。因為優先順序是相對性的,只會用來在您網站上的 URL 之間做選取。

回到頁首

實體逸出

您的 Sitemap 檔案必須以 UTF-8 編碼 (您通常可以在儲存檔案時這麼做)。如同所有的 XML 檔案一樣,下表所列字元的任何資料值 (包括 URL),都必須使用實體逸出碼。

字元 逸出碼
& 符號 & &amp;
單引號 ' &apos;
雙引號 " &quot;
大於 > &gt;
小於 < &lt;

此外,所有 URL (包含您 Sitemap 的 URL 在內) 都必須以 URL 逸出,並使用其所在網頁伺服器可解讀的方式編碼。不過,如果您使用任何類型的指令碼、工具或記錄檔來產生 URL (除了手動輸入外的任何方式),那麼通常這些方式都已經執行此動作。請確認所有的 URL 都遵循 RFC-3986 URI 標準、RFC-3987 IRI 標準,以及 XML 標準

下列範例顯示使用一個非 ASCII 字元 (ü),以及一個需要實體逸出之字元 (&) 的 URL:

http://www.example.com/ümlat.html&q=name

以下是以 ISO-8859-1 編碼 (用於使用該編碼的主機伺服器) 和 URL 逸出的相同 URL:

http://www.example.com/%FCmlat.html&q=name

以下是以 UTF-8 編碼 (用於使用該編碼的主機伺服器) 和 URL 逸出的相同 URL:

http://www.example.com/%C3%BCmlat.html&q=name

以下是同一個 URL 的實體逸出:

http://www.example.com/%C3%BCmlat.html&amp;q=name

XML Sitemap 範例

以下顯示一個 XML 格式的 Sitemap 範例。範例中的 Sitemap 包含少數的 URL,每個 URL 都使用不同的選用參數。


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

   <url>

      <loc>http://www.example.com/catalog?item=12&amp;desc=vacation_hawaii</loc>

      <changefreq>weekly</changefreq>

   </url>

   <url>

      <loc>http://www.example.com/catalog?item=73&amp;desc=vacation_new_zealand</loc>

      <lastmod>2004-12-23</lastmod>

      <changefreq>weekly</changefreq>

   </url>

   <url>

      <loc>http://www.example.com/catalog?item=74&amp;desc=vacation_newfoundland</loc>

      <lastmod>2004-12-23T18:00:15+00:00</lastmod>

      <priority>0.3</priority>

   </url>

   <url>

      <loc>http://www.example.com/catalog?item=83&amp;desc=vacation_usa</loc>

      <lastmod>2004-11-23</lastmod>

   </url>

</urlset>

回到頁首

使用 Sitemap 索引檔案 (來群組多個 Sitemap 檔案)

您可以提供多個 Sitemap 檔案,但每個 Sitemap 檔案不得超過 50,000 個 URL,且不得大於 50MB (52,428,800 位元組)。您可以視需要使用 gzip 壓縮 Sitemap 檔案以減少頻寬需求,但是解壓縮之後的 Sitemap 檔案不可超過 50MB。如果您想列出 50,000 個以上的 URL,您必須建立多個 Sitemap 檔案。

如果您提供多個 Sitemap,請將每一個 Sitemap 檔案列於 Sitemap 索引檔中。Sitemap 索引檔所列出的 Sitemap 不可超過 50,000 個,且不可大於 50MB (52,428,800 位元組),但可以被壓縮。您可以擁有一個以上的 Sitemap 索引檔。Sitemap 索引檔的 XML 格式與 Sitemap 檔案的 XML 格式類似。

Sitemap 索引檔必須:

Sitemap 索引檔也可使用選用的 <lastmod> 標記。

注意:Sitemap 索引檔只可用來指定它本身所在網站中的 Sitemap。例如,http://www.yoursite.com/sitemap_index.xml 可以包含 http://www.yoursite.com 中的 Sitemap,但不能包含 http://www.example.com 或 http://yourhost.yoursite.com 中的 Sitemap。如同 Sitemaps 一般,您的 Sitemap 索引檔必須以 UTF-8 進行編碼。

XML Sitemap 索引範例

以下範例顯示列出兩個 Sitemap 的 Sitemap 索引。


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

      <lastmod>2004-10-01T18:23:17+00:00</lastmod>

   </sitemap>

   <sitemap>

      <loc>http://www.example.com/sitemap2.xml.gz</loc>

      <lastmod>2005-01-01</lastmod>

   </sitemap>

</sitemapindex>

注意:Sitemap 中的 URL 就像您 XML 檔案中所有的值一樣,都必須是實體逸出

Sitemap 索引 XML 標記的定義

屬性 說明
<sitemapindex> 需求條件 壓縮檔案中關於所有 Sitemap 的資訊。
<sitemap> 需求條件 壓縮關於個別 Sitemap 的資訊。
<loc> 需求條件

識別 Sitemap 的位置。

此位置可以是 Sitemap、Atom 檔案、RSS 檔案或純文字檔。

<lastmod> 選用

識別相對應 Sitemap 檔案的修改時間,而不是該 Sitemap 中所列出的任何網頁之變更時間。Lastmod 標記的值需採用 W3C 日期時間格式。

您可以藉由提供最後修改的時間戳記,讓搜尋引擎的搜尋器只擷取索引中的一個 Sitemap 子集,例如,搜尋器只能擷取於特定日期之後修改的 Sitemap。這個額外的 Sitemap 擷取機制可讓您在大型網站上迅速找到新的 URL。

回到頁首

其他 Sitemap 格式

Sitemap 通訊協定可讓您將您網頁的相關詳細資料提供給搜尋引擎,而且我們也鼓勵您使用這種方法,因為除了 URL 以外,您還可以提供更多網頁相關資訊。 不過,除了 XML 通訊協定外,我們也支援 RSS 資訊提供和文字檔,這兩種方式所能提供的資訊較有限。

聯合供稿資訊提供

您可以提供 RSS (聯合供稿資訊提供) 2.0,也可以提供 Atom 0.3 或 1.0 資訊提供。 一般而言,只有當您的網站已使用聯合供稿資訊提供時,才會使用此格式。 請注意,這種方式不會讓搜尋引擎找到您網站中所有的 URL,因為資訊提供只會提供最新 URL的相關資訊,不過搜尋引擎仍能在一般的檢索程序中依照資訊提供裡的網頁連結,使用前述的 URL 資訊找出您網站的其他網頁。 請確認資訊提供是位在您想要搜尋引擎進行搜尋的最高層目錄。 搜尋引擎會從資訊提供擷取資訊,如下所示:

文字檔

您可以提供純文字檔,其中每行包含一個 URL。 文字檔必須遵循下列指南:

以下顯示文字檔的範例項目。

http://www.example.com/catalog?item=1


http://www.example.com/catalog?item=11

回到頁首

Sitemap 檔案位置

Sitemap 檔案的位置會決定可納入該 Sitemap 中的一組 URL。位於 http://example.com/catalog/sitemap.xml 的 Sitemap 檔案可以包含任何以 http://example.com/catalog/ 開頭的 URL,但不可包含以 http://example.com/images/ 開頭的 URL。

如果您有權限變更 http://example.org/path/sitemap.xml,您也應該有權限提供前置網址為 http://example.org/path/ 之 URL 的資訊。在 http://example.com/catalog/sitemap.xml 中被歸類為有效的 URL 包括以下範例:


http://example.com/catalog/show?item=23

http://example.com/catalog/show?item=233&user=3453

http://example.com/catalog/sitemap.xml 中歸類為無效的 URL 包括:


http://example.com/image/show?item=23

http://example.com/image/show?item=233&user=3453

https://example.com/catalog/page1.html

請注意,這表示列於 Sitemap 中的所有 URL 必須使用相同的通訊協定 (範例中使用的是 http),且須和 Sitemap 位於同一個主機上。例如,如果 Sitemap 位於 http://www.example.com/sitemap.xml,就不可包含來自 http://subdomain.example.com 的 URL。

已歸類為無效的 URL 會在之後的程序中被捨棄。我們強烈建議您將 Sitemap 放在您網頁伺服器的根目錄中。例如,如果您的網頁伺服器位於 example.com,那麼您的 Sitemap 索引檔將位於 http://example.com/sitemap.xml。在某些情況下,您需要不同的路徑產生不同的 Sitemap (例如當您組織的安全性權限會針對不同目錄劃分不同的使用權限時)。

如果您使用具有通訊埠號碼的路徑來提交 Sitemap,則必須將該通訊埠號碼做為路徑的一部分,包含在 Sitemap 檔案所列的各個 URL 中。例如,如果您的 Sitemap 位於 http://www.example.com:100/sitemap.xml,則 Sitemap 中所列的各個 URL 都必須以 http://www.example.com:100 為開頭。

Sitemap 與交叉提交

若要從單一主機提交多個主機的 Sitemap,您必須證明您擁有該主機的所有權,才能在 Sitemap 中提交其 URL。這裡提供一個範例。假設您要提交 3 部主機的 Sitemap:


www.host1.com with Sitemap file sitemap-host1.xml

www.host2.com with Sitemap file sitemap-host2.xml

www.host3.com with Sitemap file sitemap-host3.xml

另外,您想要將這三個 Sitemap 全部放置在單一主機上:www.sitemaphost.com。所以 Sitemap URL 將會變成:


http://www.sitemaphost.com/sitemap-host1.xml

http://www.sitemaphost.com/sitemap-host2.xml

http://www.sitemaphost.com/sitemap-host3.xml

依照預設,這樣會導致「交叉提交」錯誤,因為您正嘗試透過 www.sitemaphost.com 主控的 Sitemap 提交 www.host1.com 的 URL (其他兩部主機的情況也是如此)。避免發生此錯誤的辦法就是證明您擁有 (也就是擁有修改檔案的權限) www.host1.com。您可以藉由修改 www.host1.com 上的 robots.txt 檔案,使其指向 www.sitemaphost.com 上的 Sitemap。

此範例中,位於 http://www.host1.com/robots.txt 的 robots.txt 檔案會包含 "Sitemap: http://www.sitemaphost.com/sitemap-host1.xml"。透過修改 www.host1.com 上的 robots.txt 檔案,並將其指向 www.sitemaphost.com 上的 Sitemap,您就可以間接證明您擁有 www.host1.com。換句話說,不論是誰控制 www.host1.com 上的 robots.txt 檔案皆會信任 http://www.sitemaphost.com/sitemap-host1.xml 上的 Sitemap,納入 www.host1.com 的 URL。以上相同程序適用於其他兩部主機。

現在您可以提交 www.sitemaphost.com 上的 Sitemap。

當其中一部特定主機的 robots.txt,假設是 http://www.host1.com/robots.txt,指向其他主機上的 Sitemap 或 Sitemap 索引時,robots.txt 預期每一個目標 Sitemap,例如 http://www.sitemaphost.com/sitemap-host1.xml,屬於該主機的所有 URL 會指向它。如同先前所述,這是因為 Sitemap 只會預期擁有來自單一主機的 URL。

回到頁首

驗證 Sitemap

下列 XML 配置定義可出現在您的 Sitemap 檔之元素和屬性。您可以在以下連結下載這個配置:

關於 Sitemap:http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd
關於 Sitemap 索引檔:http://www.sitemaps.org/schemas/sitemap/0.9/siteindex.xsd

有許多工具可以協助您根據此配置,來驗證您 Sitemap 的結構。在以下每個位置您都可以找到 XML 相關工具的清單:

http://www.w3.org/XML/Schema#Tools
http://www.xml.com/pub/a/2000/12/13/schematools.html

為了根據配置來驗證您的 Sitemap 或 Sitemap 索引檔,XML 檔案會需要額外的標題,如下所示。

Sitemap:


<?xml version='1.0' encoding='UTF-8'?>

<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

         xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"

         xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

   <url>

      ...

   </url>

</urlset>

Sitemap 索引檔:


<?xml version='1.0' encoding='UTF-8'?>

<sitemapindex xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

         xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/siteindex.xsd"

         xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

   <sitemap>

      ...

   </sitemap>

</sitemapindex>

回到頁首

擴充 Sitemap 通訊協定

您可以使用自己的名稱領域來擴充 Sitemaps 通訊協定,只要在根元素指定此名稱領域即可。例如:


<?xml version='1.0' encoding='UTF-8'?>

<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

         xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"

         xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"

         xmlns:example="http://www.example.com/schemas/example_schema"> <!-- namespace extension -->

   <url>

      <example:example_tag>

         ...

      </example:example_tag>

      ...

   </url>

</urlset>

回到頁首

通知搜尋引擎檢索器

在您建立 Sitemap 檔案並將其放置在您的網頁伺服器上後,您需要將此 Sitemap 檔案的位置告知支援此通訊協定的搜尋引擎。 您可以透過下列方式完成:

搜尋引擎接著就可以擷取您的 Sitemap,並提供 URL 給檢索程式。

透過搜尋引擎的提交介面提交您的 Sitemap

若要直接向搜尋引擎提交您的 Sitemap,以便接收狀態資訊和處理錯誤,請參閱各搜尋引擎的說明文件。

在您的 robots.txt 檔案中指定 Sitemap 位置

您可以使用 robots.txt 檔案指定 Sitemap 的位置。 若要這麼做,只要新增以下這行即可:

Sitemap: http://www.example.com/sitemap.xml

這個指令獨立於 user-agent 行,因此可以放在檔案中的任何位置。 如果您有 Sitemap 索引檔,可以只加入該檔案的位置。 您不需要列出索引檔中所列的每一個個別 Sitemap。

您可以為每個 robots.txt 檔案指定一個以上的 Sitemap。

Sitemap: http://www.example.com/sitemap-host1.xml

	Sitemap: http://www.example.com/sitemap-host2.xml

透過 HTTP 要求提交您的 Sitemap

若要使用 HTTP 要求來提交您的 Sitemap (將 "searchengine URL" 改為搜尋引擎提供的 URL),請在下列 URL 提交您的要求:

<searchengine_URL>/ping?sitemap=sitemap_url

例如,如果您的 Sitemap 位於 http://www.example.com/sitemap.gz,您的 URL 將會變成:

<searchengine_URL>/ping?sitemap=http://www.example.com/sitemap.gz

URL 將 /ping?sitemap= 之後的所有內容編碼:

<searchengine_URL>/ping?sitemap=http%3A%2F%2Fwww.yoursite.com%2Fsitemap.gz

您可以使用 wget、curl,或您選擇的其他機制來發出 HTTP 要求。成功的要求將會傳回 HTTP 200 的回應碼;如果您收到不同的回應,則請重新提交您的要求。HTTP 200 回應碼僅表示搜尋引擎已收到您的 Sitemap,並不表示 Sitemap 本身或其所包含的 URL 是有效的。有一個執行此動作的簡單方法,就是設定一個自動化工作來定期產生並提交 Sitemap。
注意: 如果您所提供的是 Sitemap 索引檔,您只需要發佈一個包含 Sitemap 索引檔位置的 HTTP 要求,而不需要為列於索引中的每一個 Sitemap 發佈個別要求。

回到頁首

排除內容

Sitemaps 通訊協定可讓您告知搜尋引擎您要它為哪些內容建立索引。 若要告知搜尋引擎您不想要建立索引的內容,請使用 robots.txt 檔案或漫遊器中繼標記。 若需更多關於如何從搜尋引擎排除內容的詳細資訊,請參閱 robotstxt.org

 

回到頁首

上次更新日期:2008 年 3 月 21 日