google サイトマップ ツール 自作PHP版の使用方法

私もSEOについて色々調査してみました。Apacheのログ解析からどのような変化があったかを載せていきたいと思います。また、SEO対策として学んだことも載せていきます。
google サイトマップ ツール 自作PHP版の使用方法

google サイトマップ ツール 自作PHP版の使用方法

月曜日, 12, 05, 2005

line line

googleサイトマップ作成ツール PHP版 なるものを作ってみました。
ちょっとテスト的に作ってみようと思ったら、特に難しいところもないのでそのまま最後まで作成。
一応、私の環境ではちゃんと思惑通りに動作していますが、他のところではどうなんでしょう。

私は全くと言っていいほどXMLの知識がないので、作成された書式が正しいのかわかりませんが、googleにアップしてもエラーがでないので一応は正しいんじゃないかと。
公開しておきますんで、使いたい方は使ってください。
そんな難しくはないと思いますが、余計なところをいじるとサーバーをクラッシュさせる事態になりかねないので注意。
なんかあっても、私は責任は持ちません。

googleの配布しているgoogleサイトマップジェネレーターは、

・ページのURL
・ページの最終更新時間
・ページのサイトにおける重要度(0.5000)

を記述するようになっていますが、私の作成したものは

・HTMLファイルのみ(拡張子がhtmlかhtm)マップに登録
・パスに「 index 」という文字列が入っている場合は、更新時間ではなく
<changefreq>daily</changefreq>
<priority>0.8</priority>
という属性(?)を記述するようにしました。更新頻度が高いindexファイルは、こちらの設定の方がいいんじゃないかなぁ。と思います。

だいたい1万を超えるファイル・ディレクトリでも3~4秒で終わると思います。
が、何度も言いますが、私以外の環境では試していないので他の環境ではサッパリわかりません。
もしうまくいった方は、このページにでもコメントくれるとうれしいです。

なお、もし反響がよければ、今度は更新したファイルのみ拾ってサイトマップに記録、さらにgoogleにアップデートしてくれるようなものを作りたいと思います。
私の場合はさらに改良して使用しています。こちらをみて頂ければ欲しくなるかも?(w
googleサイトマップ作成ツール 実行後画面

googleサイトマップ作成ツール PHP版
一応、ページ下部のテキスト入力欄の内容をコピーして、エディタか何かに貼り付け、必要な箇所を修正し、ファイル名を「walkDir.php」にして、文字コード「UTF-8」で保存してください。
保存後、サーバーにアップ。

サイトマップファイルを作成するので、ディレクトリのパーミッションを「777」か「757」にしてください。(作成後はパーミッションを戻してかまいません)もしくは、FTPかなにかで、なにも書かれていない「sitemap.xml」をアップして、このファイルのパーミッションを「777」にしてもOKです。
この作業は、はじめてサイトマップを作成するときだけです。
アップしたページにアクセスし、パスワードを入力して、送信ボタンを押せば出力されると思います。

この記事はご希望通りの内容でしたか?

投稿者 campanella : 2005年12月05日 23:22 | SEO対策 | 編集

line

□□□ トラックバック □□□

このエントリーのトラックバックURL:

□□□ コメント □□□

はじめまして。
「アフィリエイトは儲かんないってば」さんの所から来ました、あきんどさんといいます。
これ便利かもと思い、早速使わせてもらいました。
が、レンタルサーバーにアップして、いざ使おうとクリックしたら、うまくいきませんでした。
87行目が
<form action="./walkDir.php" method="POST" name="form1">
となっていて「walkDir.php」がありませんとエラーが出ます。
どのようにしたらいいのか、お手すきの時にでも教えていただけませんでしょうか?
よろしくお願いします。

投稿者 あきんどさん : 2005年12月07日 13:37

さっそく使って頂きありがとうございます。
すいません説明不足でした。えっと、ツールのソースをコピーしたら、「walkDir.php」という名前で保存してください。
で、サーバーにアップ後、今の「walkDir.php」にアクセスします。あとは、そのままパスワードを入力して送信すれば動作すると思います。

投稿者 カンパ : 2005年12月08日 08:31

php版のスクリプトが無いかと探していたところ、貴サイトのこのスクリプトをちょこちょこ弄り、自サイト用に巧くカスタマイズできました。ありがとうございます。
一つ気になることですが、"</head>"が抜けているのではないでしょうか。

投稿者 ペペロンチーノ : 2006年01月13日 19:12

ご指摘ありがとうございます。
(*^_^*)
実は、私自身はこれをかなりカスタマイズして使っていていまして。
こっちは置き去りのままになっていました。
(^ ^;ゝ
細かいバグ等があるようなので適当に修正して使ってください。
また、効果があった場合等ももしよければ、お知らせください。
m(_ _)m

投稿者 カンパ : 2006年01月15日 09:29

 快適に利用させて頂いております。私のサイトはあまりファイル数が少く無いのですが(1000弱)大変助かりました。まだ細かい設定ページの重要度とかは、解かりませんがチャントページを見に来てくれてます。有難う御座いました。

投稿者 ファン : 2006年02月17日 02:31

少ないとはいえ、1,000弱はすごいですね。
全てブログでしょうか?
で、googleサイトマップ作成ツールですが、私はさらに改良して使っています。というより、この記事を作成した頃に使ったっきり、今現在はなにもしてない。という状況ですが。
(^ ^;ゝ
一応、当サイトの場合は頻繁にgoogleがクローリングしてくるので、あまりメリットを見いだせないでいます。
googleサイトマップが、β版から正式なサービスに移行したら、もう少し改良したものを公開したいと思っています。

投稿者 DVDからサーバーまで:カンパ : 2006年02月17日 02:46

サイトマップ用のスプリクトを探しててココにたどり着きました。
簡単で使いやすく非常に良いのですが
1つだけ教えていただきたい事があります

HTMLファイルのみ表示を押した段階で
一部のcgi等で700のパーミッションの関係だと思われるのですが、Warningが表示され途中で止まってしまいます

回避する方法はありませんでしょうか?

お手数ですが宜しくお願いいたします

投稿者 さと : 2006年09月01日 18:11

どういった警告が出ていますか?
ディレクトリが開けない。とかそんなエラーでしょうか?
載せられる範囲で、コピペして投稿してみてください。

投稿者 DVDからサーバーまで:カンパ : 2006年09月01日 18:22

Warning: opendir(./○○/○○/○○/): failed to open dir: Permission denied in /○○/○○walkDir.php on line 155

Fatal error: Call to undefined function: clsedir() in /○○/○○walkDir.php on line 206

ディレクトリが開けないって感じですね。
パーミッションを755に直せば回避出来るのですが、サーバー等で700にしないと今度はcgiの方がエラーになってしまいます
スルーするような回避策があれば良いのですが。
宜しくお願いいたします

投稿者 Anonymous : 2006年09月02日 10:12

一応、修正しました。
具体的には、開けないディレクトリがあってもエラーをださないようにしました。

あるいは、CGIを動作させるディレクトリに「HTMLファイル」がなければ、
/* 記録させないパターン */
$nonSave = array("webalizer" , "test" , "docs" , "error");
の部分に、CGIを動作させるディレクトリ名を記入するとそのディレクトリの中は参照しないようになります。
例)
/* 記録させないパターン */
$nonSave = array("cgi" , "test" , "data");
URLに「cgi」か「test」か「data」が含まれるようなディレクトリやファイルをマップに追加しない設定です。

投稿者 DVDからサーバーまで:カンパ : 2006年09月02日 12:58

上記の書き込みは「さと」です。
名前を入れるのを忘れたみたいです
すみません。

投稿者 さと : 2006年09月02日 15:34

修正ありがとうございました
試したのですが、やっぱりダメでした
「記録させないパターン 」にも登録し、
エラーがでないようにはなりましたが、
そのエラーになるフォルダの所で読み込みがストップしてます。
(途中までの表示になってしまう)

何度も何度も投稿して申し訳ございません

投稿者 さと : 2006年09月03日 15:15

了解です。
ちょっと当方で、ディレクトリのパーミッションを変更したものをつくって試してみます。
ちょっと時間がかかるかもしれないので、もしよければメールアドレスを教えてもらえますか。
http://fstyle.ddo.jp/formmail.html
の方から、フリーのメールアドレスでもかまわないので、教えてください。

きちんと動作するまで突き詰めてみましょう。
では。

投稿者 DVDからサーバーまで:カンパ : 2006年09月03日 16:37

修正完了。
一応、ディレクトリがオープンしなくても停止しない仕様に変更してみました。
【修正箇所】
関数から0が返ってきても処理を続ける仕様に変更。

投稿者 DVDからサーバーまで:カンパ : 2006年09月03日 22:30

ご親切に色々として頂きましてありがとうございます

今、修正のを試しました。

バッチリです

念のため、フォルダ(700)で止まっていたのを755に変えて最後まで読み込んでいるかと
もう一度、フォルダを700に戻し
最後まで読み込んでいるかを確認をしまして一致しました。

本当にご親切にありがとうございました

投稿者 さと : 2006年09月04日 10:54

こちらこそ、何度も手間をかけさせてしまって申し訳ない。
きちんとはじめからこっちで同じ状況をつくって実行していれば、1発で修正できたものの・・・、どうしても以前作ったプログラムに目を通すというのは(たぶんどのプログラマーも)おっくうになってしまって・・・。
(^ ^;ゝ
いずれにしても、きちんと動作するようになったので、私も一安心です。
一応、このツールで出来たサイトマップはYSTでも使えると思います。
おためしあれ。

投稿者 DVDからサーバーまで:カンパ : 2006年09月04日 11:13

あのw
何度も投稿して申し訳ございません。

最後に1つお聞きしたいのですが
プログラム的に難しかったら、出来ないって言っていただいて構いません。アップ後に修正してアップ致しますので。

priorityでindexは0.7他は0.5と設定されてましたが
例えば、追加して○○○(ファイル名)は0.6、○○○(ファイル名)は0.3のように設定するには
どの様に修正したらよいのでしょうか?

全く知識がないのに、ココラヘンかと思い修正をしたらエラーがでてしまいました(戻しましたがw)

if (strstr($fileName , "index"))
$lastmod = "<changefreq>daily</changefreq>\n<priority>0.7000</priority>";
else
$lastmod = "<lastmod>{$time}</lastmod>\n<priority>0.5000</priority>";



if (strstr($fileName , "index"))
$lastmod = "<changefreq>daily</changefreq>\n<priority>0.7000</priority>";
の下に追加して
if (strstr($fileName , "○○" , "○○"))
$lastmod = "<changefreq>daily</changefreq>\n<priority>0.3000</priority>";
else
$lastmod = "<lastmod>{$time}</lastmod>\n<priority>0.5000</priority>";
$temp = <<<EOF
と入れたらエラーでした。難しい。

プログラムに知識が無いのに色々言ってすみません。
それと、YSTでも登録しましたら殆どのページが拾われて感謝感激です。

投稿者 さと : 2006年09月05日 21:40

えっと、その場合、
else if (strstr($fileName , "○○"))
$lastmod = "<changefreq>daily</changefreq>\n<priority>0.3000</priority>
となります。
2つ以上の条件分岐は、「else if」となり、日本語的に言えば、「そうではなく~であれば」という意味になります。
ちなみに「else」だけだと「上以外ではない条件であれば」という意味になります。

また、「strstr」という関数は2つの引数(今回で言えば、「$fileName」と「○○」)なので、エラーが出たのは引数を3つ指定していたからでしょう。

YSTでも効果ありましたか。
私の方は効果があるんだかないんだか・・・。まぁ変化はでてきましたが・・・。

投稿者 DVDからサーバーまで:カンパ : 2006年09月05日 22:20

line
名前
メールアドレス
URL
コメント