レンタルサーバー選びの迷いを解決!全力サポートします

Google or AdMax Promotion (srv)

独自URLに対応する「サイトマップインデックスファイル」の生成

WordPressが管理しない独自のURLで提供するコンテンツを
サイト内に構成した場合、サイトマップも独自で準備する必要があります。
ここではPHPを利用して「サイトマップインデックスファイル」の
出力プログラムをご紹介します。
サイトマップのURLが5万件以下であれば単一サイトマップで十分ですが、
5万件を超える場合は、別途サイトマップインデックスを準備し、
各サイトマップヘのURLをリスト化する必要があります。

尚、この記事で作成するサイトマップインデックスは、
以下のサイトマップ作成に対してのものになります。

また対象プログラムは以下になります。

「サイトマップインデックスファイル」の成果物

サイトマップとサイトマップインデックスファイルは、
XML形式のデータとして作成します。

仕様はGoogleでも紹介されています。(後述)

今回作成するサイトマップインデックスは、
99個のサイトマップファイルへのURLを示したインデックスとして作成します。

こんな感じのものを生成します。

リストの各URLが、サイトマップファイルへのURLになっています。

sitmap_100.xml (→ファイルには100/1/1~199/12/31までのURLが記載されているリスト)
sitmap_200.xml (→ファイルには200/1/1~299/12/31までのURLが記載されているリスト)
sitmap_300.xml (以下同)
sitmap_400.xml
sitmap_500.xml
sitmap_600.xml
sitmap_700.xml
sitmap_800.xml
sitmap_900.xml
sitmap_1000.xml



sitmap_9900.xml

と。

プロモーション

Google or AdMax Promotion (srvpos)

独自URLに対応するサイトマップインデックス出力プログラム

基本的にはサイトマップインデックス仕様に従って、PHPで出力するプログラムを生成します。

以下の様なプログラムを「sm_demo/sitemap_idx.php」に配置しています。

まぁ、直接叩いてもサイトマップインデックスは表示されます(パラメータ不要の為)
このままではURLがインデックス要求向きではありませんけども。
https://rensrv.com/sm_demo/sitemap_idx.php

実際には以下の様な処理を記述しています。
※namespaceなど適宜ご指定をお願いします。

sitemap_idx.php

$xml = new \SimpleXMLElement($xmlstr);」にある通り、
SimpleXMLElement」クラスを利用しています。

コンストラクタ部分は環境依存(本番、ローカル)の
切替のドメイン振り分けのみですので無視して構いません。

sitemapidx_gen->proc_sm()」メソッドが処理の実体です。

空のXML文書を文字列で生成

$xmlstr =<<<xm <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="/sm_demo/sitemapindex_template.xsl" ?> <sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"></sitemapindex> xm; の部分で、

空のXMLを定義しています。

この時点で「href="/sm_demo/sitemapindex_template.xsl」として、
https://rensrv.com/sm_demo/sitemapindex_template.xsl」ファイルで、
XMLスタイル(xsl)指定を行っています。

SimpleXMLElementインスタンスの生成

空の文字列として準備した「$xmlstr」を
$xml = new \SimpleXMLElement($xmlstr);」として、
SimpleXMLElement」インスタンスを生成します。

以後は「$xml 」に対して要素の追加を行っていきます。

この時点で「<sitemapindex></sitemapindex>」がXMLのルートタグになっています。

<sitemap></sitemap>ノードの追加

サイトマップインデックスには、1URL(サイトマップへのURL)を、
「<sitemap></sitemap>ノード」として追加していきます。

ループ処理の中で、以下のように子要素を都度追加しています。

$xmlitem = $xml -> addChild("sitemap");

<loc></loc><lastmod></lastmod>子要素を追加しURLを指定

作成した「<sitemap></sitemap>ノード」($xmlitemインスタンス)の子として、
<loc></loc>と、<lastmod></lastmod>の子ノードを追加します。

その際に「loc」には、サイトマップのURLを指定します。
「lastmod」には最終更新日を指定します。(ここでは固定日付)

$xmlitem -> addChild('loc', $url);
$xmlitem -> addChild('lastmod', '2018-05-30');

日付を定期的に更新する必要がある場合は別途仕組みを考えてください。
(対象固定ページの最終更新日を自動的に取得する・・・など?)

使用可能なタグは以下を参照下さい。

サイトマップ インデックスの XML タグ定義

属性 説明
<sitemapindex> 必須 ファイル内のすべてのサイトマップに関する情報を囲みます。
<sitemap> 必須 個々のサイトマップの情報を囲みます。
<loc> 必須 サイトマップの場所を指定します。

この場所には、サイトマップ、Atom ファイル、RSS ファイル、テキスト ファイルを配置できます。

<lastmod> オプション 対応するサイトマップ ファイルの更新時刻を指定します。 サイトマップにリストされているページの変更時刻ではありません。 lastmod タグの値は、W3C Datetime 形式で指定する必要があります。

最終更新日のタイムスタンプを提供すると、検索エンジンのクローラがインデックス内の特定のサイトマップのみをクロールできるようになります。たとえば、特定の日付以降に更新されたサイトマップのみがクロールされます。このようにサイトマップを段階的にクロールすることで、大規模なサイトでも新しい URL を迅速に見つけることができます。

(抜粋)sitemaps.org – プロトコル

 

メソッドから「$xml」インスタンスの返却とブラウザ出力

メソッドの最後で「return $xml;」として「$xml」インスタンスを返しています。

受け取ったXMLの生成に成功していた場合(falseでない)には、
表示用のヘッダーの出力後「$xml->asXML();」でXMLの出力を行います。

 

サイトマップインデックスへのURLリライト定義

この状態でも前述の通り、
直接URL指定すれば、サイトマップインデックスは表示されます。

https://rensrv.com/sm_demo/sitemap_idx.php

しかし、やはりURLも「~.xml」としたいものです。

.htaccessによるリライト定義

特定のURLに対してアクセスがあった場合、
この「sm_demo/sitemap_idx.php」が応答するようにリライトを定義します。

 

これによって「sm_demo/sitmap_index.xml」への要求は、
sm_demo/sitemap_idx.php」への要求として処理されます。

 

では実際にアクセスをします。

サイトマップが正常に表示されていれば問題ありませんが、
作成した当初はおそらくは平文でXMLが表示されているかもしれません。

それはスタイルをまだ定義していない為です。

 

その場合は以下の様なスタイル未定義のXMLが表示される事と思います。

 

続いて、サイトマップの実体ファイルの生成プログラムを配置します。

 

以下は参考情報になります。

「サイトマップインデックスファイル」の仕様

サイトマップとサイトマップインデックスファイルは、
XML形式のデータとして作成します。

仕様はGoogleでも紹介されています。

サイトマップ形式

Google では、下記のように複数のサイトマップ形式をサポートしています。

どの形式でも 1 つのサイトマップにはサイズが 50 MB(圧縮しない状態で)以下、URL が 50,000 件以下という制限があります。これよりサイズが大きい場合や、URL が多い場合は、複数のサイトマップにリストを分割する必要があります。または、サイトマップ インデックス ファイル(サイトマップのリストを参照するファイル)を作成して、そのインデックス ファイルのみ Google に送信することもできます。複数のサイトマップやサイトマップ インデックス ファイルを Google に送信できます。

XML

Google は標準のサイトマップ プロトコルをサポートしています。また、動画、画像、ニュースの各リソース用の XML 拡張機能もサポートしています。これらの拡張機能を使用して、サイト上にある動画ファイル、画像などの解析しにくいコンテンツについて記述し、こうしたリソースの Google インデックスへの登録方法を改善することができます。

(抜粋引用) サイトマップの作成と送信 – Search Console ヘルプ

 

基本的には「標準のサイトマップ プロトコル」に従ってXMLを生成します。

サイトマップインデックスを利用する場合、
「サイトマップインデックスのサンプル」の部分を参照します。

XML サイトマップ インデックスのサンプル

次の例では、2 つのサイトマップをリストするサイトマップ インデックスを作成します。

(抜粋引用)sitemaps.org – プロトコル 

 


AdMax Promotion

公開日:

コンテンツナビ
すべて展開 | すべて省略

AdMax Promotion

カテゴリ
すべて展開 | すべて省略

QRコードからもこのURLを開けます。