サイトマップとは、何ページがどこにあるかを Google などの検索ボットに通知するためのアドレスです。Wordpress はプラグインでなんとかしてますが、Mediawiki はツールを手動で実行して作成します。ただ、滅多に記事はかかないものの都度コマンドを実行するのは面倒なので自動化しました。自動化するにはサーバーにある Cron コマンドを実行するのですが、ホスティング サイトの場合は、管理コンソールに用意されています(ない場合もある)。自分が契約しているエックスサーバーは使えるようなので設置しました。
1.Mediawiki で作成されるサイトマップの名前空間を制限します。ここではメインのみにしたいので LocalSettings.php に以下を追加して上書きします。
$wgSitemapNamespaces = array (NS_MAIN);
2.エックスサーバーのサーバーパネルにログインし、[サーバー情報] を確認します。[コマンドパス一覧] から PHP のコマンドパスを控えます。ここでは
/usr/bin/php7.0
で実行できることを確認しました。
3.コマンドをテストします。エックスサーバーは SSH で接続できるので、ログインしてコマンドを実行します。SSH 接続の設定が手間なのでテストしなくても良いですが、事前に試した方が無難でしょう。
/usr/bin/php7.0 /home/<ユーザー名>/<サイト名>/public_html/<Mediawikiのパス>/maintenance/generateSitemap.php --fspath=/home/<ユーザー名>/<サイト名>/public_html/ --urlpath=http://<サイトの URL>/ --compress=no --identifier=wiki
4.robots.txt に以下を追加します。
Sitemap: http://<サイトのホスト名>/sitemap-index-wiki.xml
5.Google ウェブマスターツールで、自分のサイト → [サイトマップ] → [サイトマップの追加/テスト] をクリックし、sitemap-index-wiki.xml を入力、[送信] をクリックします。作成後はテスト実行し、エラーがないことを確認します。
4.最後に、エックスサーバーに cron コマンドを追加します。サーバーパネルの [Cron設定] をクリックし、[CRONの設定] をクリックします。以下の設定を入力し、[CRONの追加] ボタンをクリックします。確認画面が表示されるので、もう一度 [CRONの追加] ボタンをクリックします。
分 | * |
---|---|
時間 | 0 |
日 | * |
月 | * |
曜日 | * |
コマンド | /usr/bin/php7.0 /home/<ユーザー名>/<サイト名>/public_html/<Mediawikiのパス>/maintenance/generateSitemap.php --fspath=/home/<ユーザー名>/<サイト名>/public_html/ --urlpath=http://<サイトの URL>/ --compress=no --identifier=wiki |
コメント | Mediawiki サイトマップ作成 |
上記で毎日午前 0 時を意味します(エックスサーバーの場合は日本時間)。
以上で完了です。
Mediawiki のサイトマップを作成したらこんなメモの存在が判明(笑)。