PHPでサイトマップを自動的に生成して自動的に更新する方法

PHP

Webページを更新した後に、手作業でサイトマップも更新するのはとても面倒ですよね?こんな面倒な作業をしたくない!という方は、こちらの方法を是非!試してください。今後、手作業でのサイトマップ更新が必要なくなります!
しかしながら、今回のサイトップ自動生成を実装するには1つだけ条件があります。それは新規(修正)で更新するWebページの拡張子が「.html」であることが条件です。「.php」でも問題ありませんが、この条件さえ満たしていれば、今後はサイトマップの更新が確実に楽になるはずです!

ディレクトリを理解する

まずは、更新するフォルダを把握する

ページを更新(新規追加)するファイルの拡張子 .htmlファイルを格納しているフォルダ名を「pages」とします。
この「pages」フォルダ内に、これから作る「sitemap.php」を入れてあげれば完成です!
つまり「pages」フォルダ内に存在している .htmlファイルを全て調べて、URLを抽出して、サイトマップを生成する。という仕組みです。単純ですね!

さくっと「sitemap.php」をコピペする

「pages」フォルダの中に「sitemap.php」を入れてください

サンプルとして「pages」フォルダの中に、更新(新規追加)ファイルである32876298145.html、43956856273.html〜といった.htmlファイル10ファイル格納しています。この同ディレクトリ内に「sitemap.php」を配置します。

続いて、下記のPHPコードをコピペしてファイル名を「sitemap.php」で保存する(●●●●●●.comを自分のサイトURLに変更する) → サーバにUPロードする。

<?php
/*
「pages」フォルダ内全ての .htmlのURLと生成日時を取得して
サイトマップを出力する
このURををGoogleに登録する
↓
https://●●●●●●.com/pages/sitemap.php
*/

// pagesディレクトリのパスを指定
$thisDirectory = './';
$sitePath = 'https://●●●●●●.com/pages/';

// サイトマップのヘッダーを出力
header("Content-Type: application/xml; charset=UTF-8");
echo '
';

// hogeディレクトリ内のファイル一覧を取得
$files = scandir($thisDirectory);

// ファイル一覧から.htmlファイルのURLとlastmodを出力
foreach ($files as $file) {
    if (pathinfo($file, PATHINFO_EXTENSION) === 'html') {
        $filePath = $file;
        $lastModified = date("c", filemtime($filePath)); // ファイルの最終更新日時を取得
        echo '
  
    '. $sitePath . htmlspecialchars($filePath) . '
    ' . htmlspecialchars($lastModified) . '
    1.0
  ';
    }
}

// サイトマップのフッターを出力
echo '
';
?>

サイトマップが機能しているか確かめる

正常に動いているか確認しましょう!

必ずサーバにUPしたら、確認しておきましょう!
サーバにUPした後にブラウザで https://●●●●●●.com/pages/sitemap.php にアクセスしてみましょう。下記のように正常に表示されていたら成功です!

めちゃくちゃ簡単ですね!これで、いちいち手動でサイトマップを更新する作業がなくなるはずです!お試しください。
そして、このURLをGoolgeサーチコントロールに登録することでGoogleの検索エンジンロボットが見にきてくれるようになります。

Googleサーチコントロールに登録する

サイトマップを作ったら終わりではない

Googleサーチコントロール ⇒ 通称「サチコ」に登録することで、登録されたサイトマップのURLをGoogle検索ロボットに伝えることができます。

こちらの記事にまとめてあります。WordPressサイトを「サチコ」に登録後サイトマップxmlを送信するちなみに、こちらの記事ではWordPressでの登録方法ですが、基本的なやり方は同じです。また、登録するURLは「sitemap.xml」と「sitemap.php」でもどちらでも良いです。どちらでも、サイトマップのURLをGoogle検索ロボットに伝えることができます。よっぽど質の悪いWebページでなければ、ちゃんとインデックスされます。もしも、Webページに問題がある場合はGoogleからメールが来るので、速やかに修正しましょう。
sitemap.xmlの場合 ↓
sitemap.phpの場合 ↓

まとめ

  • 手動でサイトマップの更新は面倒なので自動化しよう
  • sitemap.phpをサーバにUPする
  • サイトマップ生成を自動化したら勝手に更新される
  • GoogleサーチコントロールにサイトマップURLの登録しておこう