お寿司か焼き肉食べたい

まじめな事からしょーもない事まで

sitemap.xmlを楽に生成したいねん!!!

投稿日:2017年08月30日 17時09分

へへへwファイル、こんだけありまっせ!

sitemap.xmlってのをご存じでしょうか。
自サイト持ってて、SEOも気にしないとね☆みたいな人はたぶん作った事があると思います。
なにこれ?って感じですが、まぁ、クロールしてくる検索エンジンに対して
【ウチのサイトはこんだけファイルありますねんや!】って事を伝える手法になります。

つくりたい・・・!

基本的な作り方というか、フォーマットは以下の通り

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <url>
    <loc>ページへのURLパス</loc>
    <lastmod>ファイル最終更新日</lastmod>
  </url>
</urlset>

これがベースとなって、ページが増える場合は<url></url>間をコピペしてどんどん増やしていきましょう。
urlの中には他にもタグあったりしますが、今回は一旦置いておきます(๑´ڡ`๑)うへへ
ではがんばってつくってくださいね!!!

めんどくさい

そう、サイトコンテンツが増えてくればめっちゃ面倒くさいです。
正直やってらんねぇ!!!!って感じですね。
ただ、世の中は便利なもんで、タダでファイル抽出してsitemap.xmlを生成してくれるサイトもあります。
ありがたい話ですね。
そんな感じで、そういうツールを使って生成するのが一般的かな?と思います。
今回外部サイトの紹介はしません

おや?ファイルの中身が・・・?

ってなわけで、このサイトも最初は自動生成してもらってました。
が、蓋を開けてみると

  • 無料版件数で足りない
  • lastmodでない
  • あるファイルとないファイルがなんか入り乱れてて、中途半端にない

みたいな感じで、とても中途半端な感じのsitemapを使っていました。
いやでも、全部ないと・・・って感じで今回はPHPでsitemap.xmlを生成する処理を書いてみました。

簡単な仕様

  1. 基本的にサイトの全ファイルがほしい!
  2. 最終更新日も明記したい!
  3. でも余計なディレクトリとか、cssとかimgとか関係ないものは入れたくない!
  4. sitemap.xmlファイルを生成してダウンロードしたい

これ。
そんな感じでわーっと作ってみました。
難しい事はしてないので、PHPが動くサーバであればぺぺっとできそうな感じがしました
PHP4とか古いサーバはしらん。検証?してない(にっこり)

ご使用にあたっての注意書き

免責事項について


本ページでダウンロードができる、sitemap.xml生成処理をご利用になったことにより生じる、いかなるトラブル・損失・損害(コンピュータその他のハードウェアまたはネットワークに生じた損害およびその修理費用等を含み、直接損害、間接損害の別を問いません。また、その原因を問いません。以下同じです。)に対しても、当方(本サイト運営者。以下同じです。)は責任を負いません。なお、当方の責によらない文面の改ざん・文面内容の漏洩・第三者の不正使用その他の事故がありましても、これによって生じた損害については、当方は責任を負いかねますのでご了承ください。本ウェブサイトは、予告なしにウェブサイト運営の中断、中止や内容の変更を行うことがありますが、これらによって生じたいかなるトラブル・損失・損害に対しても責任を負うものではありません。

また、詳細、その他につきましては、当サイトについてをご確認ください。

・・・難しい事言いましたが、別に普通に使えると思うけど何か問題があっても知らんで?って事。
やな感じに見えちゃうけど書いとかないとダメなの。

修正点について

ダウンロードしたものをそのままうpして、ヒャッハーーーーーーー!!!!sitemap生成の時間だああああああああああ!!!!
とはならないので少し手を加えてもらう必要があります。

修正点1:除外ファイルの指定について

    //---------------------------------
    // 除外したいものを記述
    // 下記例では、.htmlファイルで、/test/ディレクトリに属していないファイル
    // の意味となります。
    //---------------------------------
    if(strpos($pathname,'.html') != false 
      && strpos($pathname,'/test/') === false
      )
    {

57行目あたりです。
赤字部分は今サンプルで置いていますが、必要なければ削除が必要なのと
sitemapに書きたくないディレクトリがある場合は、この例のように記述し分岐条件をバシバシ増やしていきます。
コピペは赤文字部分全部っすよ。

修正点2:pathの書き換え

//---------------------------------
// ディレクトリpathからURL形式に変更する
//---------------------------------
$list['dirData'][$cnt]['path'] = str_replace("[生ファイルパス(自分で調べて)]", "[自サイトドメイン]",$pathname);

69行目あたりです。赤文字部分を差し替えてもらう必要があります。
例としてはこんな感じ

//---------------------------------
// ディレクトリpathからURL形式に変更する
//---------------------------------
$list['dirData'][$cnt]['path'] = str_replace("/hoge/hogege/public_html/", "http://www.hoge-hoge.com",$pathname);

サーバのroot直下からのファイルパスででてきますので、これをURLに変えないといけません。
なので、DocumentRootまでの場所をドメインに変更するって事です。

肝心の処理ファイルは!!!

ずらずらと説明しましたが、こんな感じです。
さぁ、コメント入力欄を消したこの状態で大丈夫なのか正直不安ではありますが
ここからダウンロードしてください。
しつこいですが、免責事項ちゃんと読んで下さいね。(๑´ڡ`๑)

一覧に戻る