PHPを使ってサイトマップ(sitemap.xml)を自動作成する

当サイトは静的サイトなので、サイトマップ(sitemap.xml)は手動で作成・更新する必要があります。

外部からのリンクも少ないので、サイトマップをしっかり作成してGoogle Search Consoleに登録しておきたい。
でも、作成・更新が面倒くさい…
というか、うっかり忘れること多々。

何とか自動化できないか少しずつ調べていたのですが、先日やっと形にできたので、手順を備忘録として残しておこうと思います。

無料サイトで作成する方法

まず利用したのがこちらのサイト。
XML Sitemaps Generator
結構有名なサイトだと思います。

サイトのアドレスを入れてボタンを押すだけ。しばらく待つと、sitemap.xmlファイルがダウンロードできるリンクが表示されます。

簡単に利用できるしBroken links(リンク切れ)も調べられるし、500ページまでなら無料で使えるので長い間愛用していました。

しかし、ファイルをダウンロードした後に自サイトにアップロードする必要があるので、だんだん面倒になってきて…
そもそもこのサイトでサイトマップを作ること自体を忘れることも多く…

「サイト更新できたー!終わったー!!😄」
で、満足してパソコン落としちゃうんですよね😅

PHPを使って自動化

サイトマップファイルを作成→アップロードまで自動でできる方法を探していたところ、こちらのサイトを見つけました。

「おぉ!これぞ私が求めていたものだー!!✨」
とテンション上がったのですが、初めて見る言葉が多くて「どうやって実装すればいいのか分からない」という事態に…

記事途中にある「ソースコード」を使って自動化できるのは分かったのですが、このソースコードをどうすればいいかが分かるまでに少し時間がかかってしまいました。PHP、最近使い始めたばかりだったので…😅
(このソースコードが「PHPのソースコードだ」と気付くまでに時間がかかりました💧)

「Cronで定期実行」もよくわからなかったんですよね。

ソースコードをPHPファイルにする

「これPHPじゃん!!」
とふと気が付いて、さっそくVSCodeに貼り付けてみました。

VSCodeに貼り付けた画面
適当な名前をつけて、拡張子をPHPにして保存。
無事PHPファイルとして認識されました。やったー!

あとは自サイト用に設定をしていきます。

『ドキュメントルート』は使用しているサーバーによって違うと思いますが、私はロリポップを使っていたのでこのページを参考に調べました。

私の場合は「公開 (アップロード) フォルダ」を設定していたので、フルパスの後にフォルダ名を付ける必要がありました。
( /フルパス/フォルダ名/ の形)

あとは『サイトマップに登録しない拡張子』にテキストファイル(.txt)を追加しました。

PHPファイルの設定以外に、『.htaccessファイル』を使ってアクセス制限をかけました。
アドレス直打ちでアクセスした時に動作しないようにするためですね。

Cronで定期実行

今回はじめて知ったのですが、PHPファイルなどを定期的に実行するシステムがあるんですね。

ロリポップでも利用できたので、こちらのマニュアルとサイトを参考に設定してみました。

まずは動作するか確認するために、5分毎に実行する設定で様子見。

しばらくしてサイトマップファイルが無事作成されているか・内容が問題ないか確認してから、毎日4時に自動作成する設定に変更しました。

「意外と簡単に自動化実装できた!😊」
と喜んでいたのですが…

一部のURLが登録できていない…?

サイトマップファイルをよくよく確認してみると、なんかURL数が少ない気がする…

上で紹介した「XML Sitemaps Generator」を使って作成したファイルと、PHPで作成したファイルを比較してみると…
一部のURLが登録できていないことに気が付きました。

「おそらく『HTMLのaタグ』の書き方が悪いんだろうな」と当たりをつけて調べてみることに。
PHPのソースコードが読めたら良かったのですが、まだ勉強不足で全く分からなかったのでね…

「登録できていないURL」がどのようにリンクされているか確認してみたところ、
<a href="ファイル名">の様な相対パスの『 ./ 』が省略された書き方をしていると登録されていないことが分かりました。

<a href="./ファイル名">と書き直して更新すると無事登録されました!✨

最後に

他サイトさんの記事を参考に設定していっただけなのですが、うまくいかない部分の修正ができ・自サイト用に無事設定できたのでちょっと自信がつきました。

PHP、便利だなぁ☺️

自分でプログラムを作れるぐらいになりたいなぁと思いつつ、中々勉強する時間がないので… しばらくは先人の知恵を借りつつ試行錯誤していこうと思います。

関連記事
    新着記事
      ブログ内検索