Sitemap.xmlまたは「することはありませんでした...」

正月666 + 666 + 666 + 6 + 6 + 6年目のフルスイング。 真面目なことは一切したくありません。 しかし、通常は手の届かないあらゆる小さなことを行うことができます。 私にとってこのような些細なことは、Sitemap.xmlファイルの生成でした。

Sitemap.xmlは、検索エンジンでインデックスを作成する必要があるサイト上のページへのリンクを特別な形式で含むファイルです。 包括的なフォーマット情報はSitemaps.orgで見つけることができます。

私はこれらのファイルを生成するための便利なツールが欲しいとずっと思っていました。



Sitemap.xmlの生成



Web検索では、サイトマップを手動で作成するための多くの「便利なオンラインサービス」と、多くのリンクを含むサイトマップの作成には適さないいくつかの簡単なスクリプトが生成されました。



何が欲しい?



小規模なサイト用にsitemap.xmlを生成するのに、多くの労力は必要ありません。 大規模なリソースには、機能があります。

10 MBのsitemap.xmlファイルのサイズには制限があり、1つのファイルへの50,000リンクには制限があります。 データ制限の自動処理が私の目標でした。

したがって、次の要件が形成されました。

  1. スクリプトは、受信したファイルのサイズと追加されたURLの数を監視する必要があります。 必要に応じて、形式に従っていくつかのファイルを作成します。
  2. 中間データをメモリに保存しないでください。
  3. 必要に応じて、nginxを使用してアップロードするファイルの圧縮バージョンを作成します。
  4. 簡単なデータチェックを自動的に実行します。


すぐに言ってやった。 スクリプトの最終バージョンは、記事の最後にあるリンクにあります。



スクリプトは何をしませんか?



これ以上の質問を防ぐために、このスクリプトは、任意のサイトのマップを一度に生成する普遍的なソリューションではないと言います。

これは単なるツールであり、ファイルに追加されるリンクのリストは、場合によっては数回の訪問で独立して作成する必要があります。

また、スクリプトは渡されたURLを修正またはエンコードしません。 したがって、リンクがURIのRFC-3986標準、IRIのRFC-3987標準、およびXML標準に準拠していることを確認してください。





このツールを使用すると、次のようなサイトマップを作成できます。

サイトマップを生成するスクリプトの例
<?php require_once(dirname(__FILE__)."/../common.inc.php"); set_time_limit(0); ini_set('memory_limit', '128M'); $dir = dirname(__FILE__);//document root path $tmp_dir = dirname(__FILE__);//temp path $base_url = 'http://mysite.ru/';//url with sitemaps (http://mysite.ru/sitemap.xml) $gzip = true; $config = array('path' => $dir , 'tmp_dir'=>$tmp_dir,'base_url'=>$base_url,'gzip'=>$gzip, 'gzip_level'=>9); $builder = new SitemapBuilder($config); $time = time(); $builder->start(); $builder->addUrl($base_url,$time,1.0); $builder->addUrl($base_url."news",$time,1.0); /* //this is example adding url $documents = News::find(array('criteria'=>'is_published=1')); foreach($documents as $document) $builder->addUrl($document->getUrl(),$document->getUtime(),0.8); */ $builder->commit();
      
      









参照資料



  1. Sitemaps.org
  2. Sitemap.xmlを生成するためのスクリプトのソース
  3. github.comのリポジトリ



All Articles