サイトマップ自動生成プログラム(Perl)作成


はじめに
ドキュメント履歴: 2013- 5- 9 初回アップ
2013- 6- 6 更新

Googleなどの検索エンジンで、ワードを入力して検索すると色々なページが表示される。ありふれた単語なら数万ページ表示されることもザラ。ということは、その最初の方にリストされない限り検索エンジンからクリックしてもらうことは絶望的。オマケにどこかの有力ページからのリンクもなければ、折角作ったページがインターネットの海に埋もれてしまう。そうならないように、出来れば検索エンジンの表示優先順位を上げたい。そうした順位を上げるために、最低限必要とされているのがそうした検索エンジンが自動で巡回してページの情報を収集しやすくするための情報をリストした「サイトマップ」と呼ばれるリストファイル。検索エンジンが自動で巡回してページをチェックするのにページの全体を読み込んでリンクを探して・・・・という手間をかけずに、このサイトマップだけを読みこめば、サイト内の全てのページ情報が得られるので「検索エンジン受けが良くなる」という仕組みだろうか。このサイトマップは「XML」という決められた書式で記述してあることが必要だが、とっつきづらいタグなどをページごとに記述する必要があり手間がかかる。Webには自動でこのサイトマップを生成してくれるサービスもあったりする。だが、毎日更新するページなどがあったりすると、毎回この Webサービスで作成してアップし直すなんて面倒で実際には一度アップしたきり放置ということもあると思う。私も御多分にもれず、最初はこうしたWebサービスで作成し、その後はHPを新規 or 書き換えたりする度にマニュアルでXML ファイルを書き換えてアップしていたが、どうしてもこちらは滞る。
折角 Webには CGIなりのプログラム実行システムが搭載されているんだからと、自動で毎日更新してくれるフリーウェアを Webで探してみたが、ローカルのファイルのリストを作成するものはいくつかあった。サーバー上のファイルのリストを生成する Perlなどの言語のものもあるにはあるが、ファイルごとの更新日付タグまで付加してくれるものは見つけられなかった。もしかしたら、シェアウェアで個人利用に限り無料となっているものならあるのかもしれないが。
私の場合、書きかけのページがローカルにあったりするので、サーバー上のファイルをリストすることが必須だし、(何となくではあるが)更新日付まで付加したほうが良さそうだし、この際一念発起、Webのフリーの素材を参考に、更新日付タグまで付けるサイトマップ作成プログラムを作ってみた。自動で 1時間毎とか 1日毎 など定期的にサイトマップを更新してくれるので我ながら結構満足して、重宝している。


  1. <自分好みの>サイトマップ生成ツール作成
  2. オリジナルと言っても、ゼロから作らなくても検索すれば色々なサイトマップ作成ツールが Web上にはあるので、それらの中から比較的簡単なもの&改変自由なものを探してきた。参考にしたのは Boomap というフリーのツール。
    このツールは、設定が簡単で使い勝手がいいが、指定したディレクトリ内のサイトマップだけを生成するだけで、階層構造の下位ディレクトリまで自動で展開してサイトマップを作ってはくれない。私のサイトのように、3階層以上 計 30ディレクトリくらいある場合、子・孫ディレクトリまで全部のディレクトリを記述しないといけないので大変だし、ディレクトリを新規作成した場合はそのディレクトリも追記しないとサイトマップから漏れてしまう。再帰処理で子・孫ディレクトリまで自動で展開してリストしてくれる改造は私にとって必須。
    だから、基本は Boomapをお借りしてきて、このファイル検索部分を変更し、再帰的に下位ディレクトリを展開するようにして、ついでにファイル最終更新日付を取得して<lastmod>タグを付加するようにした
    Perlは 多分 最後に触ったのが 2年くらい前。ステートメント(コマンド)も もう8割方忘れていたが、何とか思い出しつつ格闘し 1週間ほどで何とか完成。

  3. ダウンロードとインストール
  4. ここをクリックして、ダウンロード。
    ダウンロードしたファイルは解凍して、「sitemap.cgi」ファイルをメモ帳などで開く。 1行目の #!/usr/bin/perl という部分を、アップするサーバーに合わせて変更する。 $Admin_password = '12345678'; という部分を自分のパスワードに変更する。
    3つのファイルを、サーバーの適当な CGI実行フォルダにアップロードし、属性を下記の通り変更する。
    フォルダ:755
    sitemap.cgi:755
    header.txt:644
    settei.txt:644

  5. 操作方法と画面
  6. アップロードした sitemap.cgi をブラウザ上から呼び出すと以下の様なウインドウが表示される。 上記で 「sitemap.cgi」に設定したパスワードを入力し、<Enter>ボタンを押す。

    <基本的な設定>ボタンを押す。

    左欄の必要な項目を設定する。
    殆どの項目は、読んでそのままだが 新しい機能としてリストされたページURLを更新日付の降順ソートする機能を付加した。通常は Googleなりのロボットが読むだけだからソートする必要はないと思うが、設置して最初の頃は新しくページをアップしたりページを更新してその日付を確認したくなるのが人情! でサイトマップを目視で確認する際にソートされていないと更新したり新しくアップしたりしたページのURLをリストから探すのが面倒。この「URLリストを更新日付降順にソートする」チェックボックスをチェックしておくと、サイトマップのリストは更新日付が新しい順に並ぶので、こうしたチェックが簡単で便利。
    設定が終わったら下のほうの <設定>ボタンを押す。

    「基本設定OK」の表示が出たら、<サイトマップ生成>の<GO>ボタンを押す。

    Google SiteMap と Yahoo SiteMap のリンクが現れて、URLの登録件数が表示される。

    リンクをクリックすると、下記のような サイトマップがブラウザで開かれる。


  7. 自動実行
  8. この sitemap.cgi を自動実行するには HTMLページ中に以下のようなリンクタグを記述する。
    <IMG src="http://sample.com/usr/bin/sitemap/sitemap.cgi?mission=make_map" width="0">
    このページが誰かによって閲覧される度に、 sitemap.cgi が呼び出され、サイトマップの更新日付と現在時刻を比較して、一定時間が経過していれば自動的にサイトマップが更新される。(例えサーバー上のページが更新されていなくても同じ内容で書き換えられる。来訪者が少ないページにしか上記リンクを置かないと一定時間ごとではなく、そのページが閲覧された周期になる。)
    周期を変更するには 58行あたりの
    if((($timenow - $modtime) > 3600)
    の 3600 (秒=1時間)を  86400 (1日)などに変更する。
    なお書き換えられたログは、サイトマップと同じディレクトリに gsitemap.txt というファイルが存在するのでそれをブラウザなどで開くと、以下のようにサイトマップが書き換えられた時間とサイトマップに書きだされた URLの件数が確認できる。

    Wed May 8 10:02:15 2013 :: auto exec done :: 358
    Wed May 8 12:14:25 2013 :: auto exec done :: 358
    Wed May 8 12:40:00 2013 :: manualy done :: 358
    Wed May 8 14:49:39 2013 :: auto exec done :: 358
    「auto exec done」は HTMLページの上記リンクなどから呼ばれた自動的な起動を「manualy done」は CGIの<サイトマップ生成>ボタンを押して実行したことを示す。


    <ダウンロード>
    ☆ このプログラムは フリーですが、作者は使用したことによる如何なる結果・損害に対しても責任を持ちません。
    ☆ 改変は自由ですが、改変に伴う問題はご自分で解決して下さい。
    ☆ ダウンロードした場合は上記条件に合意したと見なします。
           SiteMap Generator Down Load


Access Counter:  総アクセス数