「Googleサイトマップ」の設置について、よもやま話。
前回は「Python」と「Phyton」と単語を間違えた話をしましたが(スクリプト言語の方はP y t h o nです、念のためw)、まずは本家Googleのページで「サイトマップ生成ツール」の設定なんぞを読んでみたり。
って字面を追ってるだけじゃ頭に入ってこないー。
判らないときは実践あるのみって感じで、自分のサイトを対象にやってみることにします。
最終的な設置場所は、本来うちのサイトではなかったのですが、何事も勉強勉強。
ざっとexample_config.xmlを見てみると、「<!– ** MODIFY **」で始まるところが1つと、「<!– ** MODIFY or DELETE **」で始まるところが5つと、「FILTERS」が1つ。
そんな構成になっていることを把握。
最初の「<!– ** MODIFY **」で始まるところはベースURLを設定する項目みたいなんで、必須事項ですね。
問題なく、自分のサイトのパスを打ち込み。
次は「<!– ** MODIFY or DELETE **」の5つですが、
1.”url” nodes
2.”urllist” nodes
3.”directory” nodes
4.”accesslog” nodes
5.”sitemap” nodes
とありまして、いくつか組み合わせることが出来る模様。
でも最低限必要なのは「3.”directory” nodes」の項目かな。
うちだとブログの入ってるディレクトリ以下のマップを作ればいいので。
そうなると、そこから漏れるURLは無いので「1.”url” nodes」は必要無し、URLのリストを自分で作るつもりは無いのでw「2.”urllist” nodes」は必要無し、アクセスログからもマップを作るつもり無しなので「4.”accesslog” nodes」も要らない。
複数のマップも作らないので「5.”sitemap” nodes」も要らないっと。
てことで、要らない部分はコメントアウトしてしまって、必要な「3.”directory” nodes」だけ設定。
これも自分のサイトのパスを入れるだけなので大丈夫。
さて最後に残った「FILTERS」の項目。
最初から二つのフィルタが設定されてます。
「末尾に~(チルダ)がつくファイル」と「.(ドット)で始まるファイル/ディレクトリ」はリストに入れないでねってフィルタ。
これはそのまま残しておいて、あとリストアップされたくないディレクトリとかファイルとかあれば個別に指定しておけばいいらしく、画像の直リンを避けるフィルタ例も載ってたので、加えてみる。
↓
<filter action=”pass” type=”wildcard” pattern=”*.htm*” />
<filter action=”drop” type=”wildcard” pattern=”*” />
こんな感じで一度動かしてみましょう。
Googleの設定通り、必要なファイルをサーバーにアップロードして、PuTTY起動して、サーバーにログイン。
cdコマンドでカレントディレクトリを移動してから、いよいよPythonの実行ー!
pyton: Command not found.
いきなりコマンドが無いって言われたー、それもそのはずー、また綴りを間違えてやがりますぅ!(爆)
pytonって何よ!? ピトンってっ。(⊃Д`)゚。
アホやん!たにもり、アホすぎー。
正しい綴りはp y t h o n、ぴー・わい・てぃー・えいち・おー・えぬ!
もう一度コマンドをちゃんと打ち込んで、Enterキー。
実はPuTTYでは、あらかじめコマンドをコピーしておいて、右クリックから貼り付けることが出来るのでいちいち長いコマンド打たなくても良かったんだけどね。 (^^;
かかった時間ほんの数秒でサイトマップが出来上がり。
ちゃんと370のURLがリストされたようなのですが、出来ているのか確かめてみたら確かに出来ている模様。
あーでも要らないファイルまで入ってるので、フィルタを増やさなければ。
特定のディレクトリと特定のファイルをリスト化しないように追加。
↓
<filter action=”drop” type=”wildcard” pattern=”*/(任意のディレクトリ名)/*” />
<filter action=”drop” type=”wildcard” pattern=”*(任意のファイル名).html*” />
そしてもう一度マップの生成をして確かめてみるんだけど、やっぱり特定のディレクトリもファイルも拾ってきてる。 (^^;
ここの設定で悩みながら、目に留まったこの部分、
フィルタは config.xml ファイルで設定した順序で実行されます。
私はとんでもない勘違いを…
な なんだってー!!(AA略)
上にも書いたとおり、HTMLファイルのみをリスト化するフィルタを最初に書いていて、その次に付け足したので
<filter action=”pass” type=”wildcard” pattern=”*.htm*” />
<filter action=”drop” type=”wildcard” pattern=”*” />
<filter action=”drop” type=”wildcard” pattern=”*/(任意のディレクトリ名)/*” />
<filter action=”drop” type=”wildcard” pattern=”*(任意のファイル名).html*” />
こんな感じで書かれているわけね。
設定した順序で実行されるってことは、
<filter action=”pass” type=”wildcard” pattern=”*.htm*” />
↓
<filter action=”drop” type=”wildcard” pattern=”*” />
↓
<filter action=”drop” type=”wildcard” pattern=”*/(任意のディレクトリ名)/*” />
↓
<filter action=”drop” type=”wildcard” pattern=”*(任意のファイル名).html*” />
になるわけだけど、1つ目のフィルタで「HTMLファイルは全部拾ってる」ということは、3つ目のフィルタも4つ目のフィルタも「拾われたあと」だからふるい落とせない(意味ない)ってことじゃん(爆)
えぇ、フィルタの順序を間違ってたってことです。
正しくは次の通り。
<filter action=”drop” type=”wildcard” pattern=”*/(任意のディレクトリ名)/*” />
<filter action=”drop” type=”wildcard” pattern=”*(任意のファイル名).html*” />
<filter action=”pass” type=”wildcard” pattern=”*.htm*” />
<filter action=”drop” type=”wildcard” pattern=”*” />
これで、任意のディレクトリのファイルを落とす→任意のファイル名のファイルを落とす→残った中からHTMLファイルを拾い上げる→その他のファイルは落とす、ということで、上手くいくのでした。
フィルタって、4つ設定すれば「AかつBかつCかつD」なものを拾い上げる形式なんだと思ってたよー。
(それだとめちゃくちゃ処理数が増えるから駄目だよね。)
そんなわけなので、フィルタの設定をされる方は列挙する順番を間違えないようにですよ。
サイトマップファイルが出来上がったあとは、Googleでログインして登録するだけ。
毎回この作業が面倒な場合はcronジョブを設定すればいいのだけれど、疲れたのでまた時間の有るときにw