たかまるブログ

MediaWikiにSitemapを追加

      2015/12/29

MediaWikiのSitemapを作成します。
MediaWikiには標準でSitemapを作成する機能が備わっていますが、これは自動的にプログラムを定期実行するcronなどを使ってSitemapを生成することを前提としています。
僕はコアサーバを使っているので、コアサーバのcronを使ってMediaWikiのSitemapを作成してみたいと思います。

生成されるMediaWikiのSitemapは名前空間毎に作らるので、増えた時に邪魔にならないようにディレクトリを作ってその中にSitemapを作ることにしました。

サイトマップ用のディレクトリ作成
$ cd <MediaWikiのpublic_htmlがあるディレクトリ>
$ mkdir sitemap
$ chmod 755 sitemap
$ cd sitemap?
cronで実行するシェルスクリプトの作成
$ vim make_sitemap.sh
#!/bin/sh
/usr/local/bin/php /virtual/<ユーザー名>/public_html/<ドメイン名>/maintenance/generateSitemap.php --fspath="/virtual/<ユーザー名>/public_html/<ドメイン名>/sitemap/" --urlpath="<サイトURL>" --compress=no --identifier=wiki

cronで実行できるように、実行権限を追加
$ chmod +x make_sitemap.sh

ここで一度Sitemapを作成してみます。

$ ./make_sitemap.sh
$ ls
sitemap-index-wiki.xml
sitemap-wiki-NS_0-0.xml

2つのサイトマップが作成されます。
indexはSitemapの目次になります。もうひとつのSitemapが実際のwiki内のURLが記述されたものになります。
indexとNSのSitemap内に記述されたURLに実際にアクセスしてみて表示されるかどうかを確認します。Sitemap作成時のパラメータが違っていれば正しくアクセスできない場合があるのでチェック必須です。

次に、今後も自動的にSitemapが更新されるように、コアサーバのサイドメニューから CRONジョブ に設定を追加します。

分 5
時 *
日 *
月 *
曜日 *

その下の枠に
public_html/<ドメイン>/wiki/sitemap/make_sitemap.sh

を追加します。

VPS や 専用サーバなどであれば

$ crontab -e
5 * * * * /path/public_html/<ドメイン>/wiki/sitemap/make_sitemap.sh

を追加します。

そうすると、1時間おきの毎時5分にSitemapが作成されるようになります。

  • http://<ドメイン>/sitemap/sitemap-index-wiki.xml
  • http://<ドメイン>/sitemap/sitemap-wiki-NS_0-0.xml
    の2つが作られます。このうち目次にあたるindexを robots.txt に
Sitemap: http://<ドメイン>/sitemap/sitemap-index-wiki.xml

として追加します。

また、cronの確認としてwiki内に新しくページを作成して1時間後にSitemapが更新されていればOKです。
おまけ

$ pwd # 現在いる場所が分かります /home/user1/hogehoge といった表示
$ which php # php コマンドの場所が分かります。コアサーバは /usr/local/bin/php でした。

 - MediaWiki