SEO
2009.05.26
クローラーを制御する場合、html内に <meta>タグを使って直接記述する場合と、ドキュメントルートトップにrobots.txtをアップして一括して行う場合と、2つのケースに分かれる。
robots.txtでは、以下のパターン記号が使用できます。
記号 マッチ
* ワイルドカードのパターンマッチ
$ URLの末尾文字のパターンマッチ
User-Agent: *
Allow: /
※"User-Agent:"はクローラーの種類で、指定が必要な場合はgoogleウェブマスターツールなどを参照に自動生成してくれます。
上記では、すべてのクローラーに公開されているすべての階層を許可"Allow: "しています。拒否する場合は
User-Agent: *
Disallow: /
となります。
******************************
階層を指定してクローラーを拒否する場合
サイト単位、ディレクトリ単位での巡回の拒否設定 2
******************************
階層をズバリ指定しての拒否
User-Agent: *
Disallow: /sample/
Allow: /
/sample/以下の階層のクロールを拒否しています。
その他の階層はすべて許可しています。
******************************
「*」記号
「*」記号は、任意の長さの、任意のURL文字列にマッチさせるときに使います。URL文字列のいずれの部分にも使えます。
User-agent: Slurp
Allow: /public*/ ・・・1
Disallow: /*_print*.html ・・・2
Disallow: /*?sessionid ・・・3
それぞれ以下のように解釈されます。
1. 「public」で始まるすべてのディレクトリへの巡回を許可
例:「/public_html/」や「/public_graphs/」も巡回されます。
2. 「_print」を含むすべてのファイルとディレクトリへの巡回を拒否
例:「/card_print.html」や「/store_print/product.html」は巡回されません。
3. URL文字列に「?sessionid」を含むすべてのファイルへの巡回を拒否
例:「/cart.php?sessionid=342bca31」は巡回されません。
注意
以下のように書かれていた場合、2つの「Disallow」の指示は、同等とみなされます。
User-agent: Slurp
Disallow: /private*
Disallow: /private
******************************
「$」記号
「$」記号は、URLの末尾にある、任意の文字列をマッチさせるときに使います。
User-agent: Slurp
Disallow: /*.gif$ ・・・1
Allow: /*?$ ・・・2
1. robots.txtが設置されたサイト以下で、「.gif」で終わるすべてのファイルへの巡回を拒否(「$」を省き「/*.gif」とすると、ファイルパスに「.gif」を含む、すべてのファイルの巡回が拒否されていることになります)
2. 「?」で終わるすべてのファイルへの巡回を許可
注意
* 「$」記号がない場合、クローラーはプリフィクス(接頭辞)として扱い、記述された文字列を含むURLがすべてマッチします。
* 「$」記号は、文字列の末尾でのみ意味をなします。クローラーが「$」記号を見つけると、末尾であると判断し、以降の文字列を無視します。
******************************
抜粋‥‥Yahooサイトエクスプローラー内の"サイト単位、ディレクトリ単位での巡回の拒否設定 2"より。
robots.txtでは、以下のパターン記号が使用できます。
記号 マッチ
* ワイルドカードのパターンマッチ
$ URLの末尾文字のパターンマッチ
User-Agent: *
Allow: /
※"User-Agent:"はクローラーの種類で、指定が必要な場合はgoogleウェブマスターツールなどを参照に自動生成してくれます。
上記では、すべてのクローラーに公開されているすべての階層を許可"Allow: "しています。拒否する場合は
User-Agent: *
Disallow: /
となります。
******************************
階層を指定してクローラーを拒否する場合
サイト単位、ディレクトリ単位での巡回の拒否設定 2
******************************
階層をズバリ指定しての拒否
User-Agent: *
Disallow: /sample/
Allow: /
/sample/以下の階層のクロールを拒否しています。
その他の階層はすべて許可しています。
******************************
「*」記号
「*」記号は、任意の長さの、任意のURL文字列にマッチさせるときに使います。URL文字列のいずれの部分にも使えます。
User-agent: Slurp
Allow: /public*/ ・・・1
Disallow: /*_print*.html ・・・2
Disallow: /*?sessionid ・・・3
それぞれ以下のように解釈されます。
1. 「public」で始まるすべてのディレクトリへの巡回を許可
例:「/public_html/」や「/public_graphs/」も巡回されます。
2. 「_print」を含むすべてのファイルとディレクトリへの巡回を拒否
例:「/card_print.html」や「/store_print/product.html」は巡回されません。
3. URL文字列に「?sessionid」を含むすべてのファイルへの巡回を拒否
例:「/cart.php?sessionid=342bca31」は巡回されません。
注意
以下のように書かれていた場合、2つの「Disallow」の指示は、同等とみなされます。
User-agent: Slurp
Disallow: /private*
Disallow: /private
******************************
「$」記号
「$」記号は、URLの末尾にある、任意の文字列をマッチさせるときに使います。
User-agent: Slurp
Disallow: /*.gif$ ・・・1
Allow: /*?$ ・・・2
1. robots.txtが設置されたサイト以下で、「.gif」で終わるすべてのファイルへの巡回を拒否(「$」を省き「/*.gif」とすると、ファイルパスに「.gif」を含む、すべてのファイルの巡回が拒否されていることになります)
2. 「?」で終わるすべてのファイルへの巡回を許可
注意
* 「$」記号がない場合、クローラーはプリフィクス(接頭辞)として扱い、記述された文字列を含むURLがすべてマッチします。
* 「$」記号は、文字列の末尾でのみ意味をなします。クローラーが「$」記号を見つけると、末尾であると判断し、以降の文字列を無視します。
******************************
抜粋‥‥Yahooサイトエクスプローラー内の"サイト単位、ディレクトリ単位での巡回の拒否設定 2"より。
2009.05.26
MTでxmlサイトマップを作ってみる
訪れたユーザーにこのWEBサイトがどんな構造かわかりやすく紹介するためのサイトマップ、ではなくて、検索エンジンのクローラーにホームページの中身をお知らせするためのxmlサイトマップをMTで作成する。ホームページをMovableTypeでサイトを構築したら行いたい作業です。
sitemaps.orgにてGoogle、Yahoo!、Microsoft(Live Search)で認識される共通のサイトマップ書式のようです。
******************************
インデックステンプレートに"Sitemap.xml"という名称で書き出されるように、テンプレートを新規作成。下記がソース。
******************************
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc><$MTBlogURL encode_xml="1"$></loc>
<lastmod><$MTDate utc="1" format="%Y-%m-%dT%H:%M:%SZ"$></lastmod>
<changefreq>daily</changefreq>
<priority>1.0</priority>
</url>
<MTEntries lastn="9999">
<url>
<loc><$MTEntryPermalink encode_xml="1"$></loc>
<lastmod><$MTEntryModifiedDate utc="1" format="%Y-%m-%dT%H:%M:%SZ"$></lastmod>
</url>
</MTEntries>
</urlset>
******************************
後は各登録エンジンに設置したSitemap.xmlを通達。
Googleウェブマスターツール
右メニューの"サイトマップ"から、アップされいているSitemap.xmlを指定。
Yahooサイトエクスプローラー
フィード"から、アップされいているSitemap.xmlを指定。
Live Search Webmaster Center
ツールが無い模様。robots.txtにsitemapのアドレスを登録することが出来る。
******************************
******************************
robots.txtを作成しルート階層にアップ。
******************************
すべての検索エンジンのクロールしてもらう場合。
User-Agent: *
Allow: /
Sitemap: //www.gravity-works.jp/Sitemap.xml
その他、robots.txt階層ごとに拒否など。
訪れたユーザーにこのWEBサイトがどんな構造かわかりやすく紹介するためのサイトマップ、ではなくて、検索エンジンのクローラーにホームページの中身をお知らせするためのxmlサイトマップをMTで作成する。ホームページをMovableTypeでサイトを構築したら行いたい作業です。
sitemaps.orgにてGoogle、Yahoo!、Microsoft(Live Search)で認識される共通のサイトマップ書式のようです。
******************************
インデックステンプレートに"Sitemap.xml"という名称で書き出されるように、テンプレートを新規作成。下記がソース。
******************************
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc><$MTBlogURL encode_xml="1"$></loc>
<lastmod><$MTDate utc="1" format="%Y-%m-%dT%H:%M:%SZ"$></lastmod>
<changefreq>daily</changefreq>
<priority>1.0</priority>
</url>
<MTEntries lastn="9999">
<url>
<loc><$MTEntryPermalink encode_xml="1"$></loc>
<lastmod><$MTEntryModifiedDate utc="1" format="%Y-%m-%dT%H:%M:%SZ"$></lastmod>
</url>
</MTEntries>
</urlset>
******************************
後は各登録エンジンに設置したSitemap.xmlを通達。
Googleウェブマスターツール
右メニューの"サイトマップ"から、アップされいているSitemap.xmlを指定。
Yahooサイトエクスプローラー
フィード"から、アップされいているSitemap.xmlを指定。
Live Search Webmaster Center
ツールが無い模様。robots.txtにsitemapのアドレスを登録することが出来る。
******************************
******************************
robots.txtを作成しルート階層にアップ。
******************************
すべての検索エンジンのクロールしてもらう場合。
User-Agent: *
Allow: /
Sitemap: //www.gravity-works.jp/Sitemap.xml
その他、robots.txt階層ごとに拒否など。
2009.05.26
URLで「wwwあり」・「wwwなし」では表示する内容や人がかなえる意味は同じでも、検索エンジンとしては、別のURLとして個別登録してしまいます。
//www.gravity-works.jp/
↓↑別物
http://www.gravity-works.jp/
個別にインデックスされてしまうということで、SEO的なデメリットが発生します。
・同一内容のクローンページとしてマークされてしまう。スパム扱いにされる危険性あり。
・外部要因で重要なバックリンク(被リンク)された場合にもwwwありとwwwなしが混在すると、リンク数も分散し効果が半減。
なので、どちらかに揃える事はSEO対策の基本とされているようです。
では、どうやって揃えるのか。
.htaccessを使って301転送でどちらかのドメインを統一したいドメインにリダイレクトするのがよいようです。
.htaccessとは、ApacheなどのWebサーバで使用できる、Webサーバの動作を制御するためのファイル。指定は階層(ディレクトリ)単位。設置した階層以下の全てのとページで有効となります。
301は永久的な移転を意味するリダイレクト。検索エンジンによるサイト評価や情報が引き継がれると言われています。なので、当然ですが、wwwの統一だけでなく、URLの変更や引っ越しなどのときにも301転送を使うといいですね。ちなみに、一時的なりダイレクトは302。
URLを「wwwあり」・「wwwなし」を統一していない場合、
* 「wwwあり」に統一する場合
RewriteEngine on
RewriteCond %{HTTP_HOST} ^gravity-works.jp
RewriteRule (.*) //www.gravity-works.jp/$1 [R=301,L]
* 「wwwなし」に統一する場合
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.gravity-works.jp
RewriteRule (.*) http://www.gravity-works.jp/$1 [R=301,L]
//www.gravity-works.jp/
↓↑別物
http://www.gravity-works.jp/
個別にインデックスされてしまうということで、SEO的なデメリットが発生します。
・同一内容のクローンページとしてマークされてしまう。スパム扱いにされる危険性あり。
・外部要因で重要なバックリンク(被リンク)された場合にもwwwありとwwwなしが混在すると、リンク数も分散し効果が半減。
なので、どちらかに揃える事はSEO対策の基本とされているようです。
では、どうやって揃えるのか。
.htaccessを使って301転送でどちらかのドメインを統一したいドメインにリダイレクトするのがよいようです。
.htaccessとは、ApacheなどのWebサーバで使用できる、Webサーバの動作を制御するためのファイル。指定は階層(ディレクトリ)単位。設置した階層以下の全てのとページで有効となります。
301は永久的な移転を意味するリダイレクト。検索エンジンによるサイト評価や情報が引き継がれると言われています。なので、当然ですが、wwwの統一だけでなく、URLの変更や引っ越しなどのときにも301転送を使うといいですね。ちなみに、一時的なりダイレクトは302。
URLを「wwwあり」・「wwwなし」を統一していない場合、
* 「wwwあり」に統一する場合
RewriteEngine on
RewriteCond %{HTTP_HOST} ^gravity-works.jp
RewriteRule (.*) //www.gravity-works.jp/$1 [R=301,L]
* 「wwwなし」に統一する場合
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.gravity-works.jp
RewriteRule (.*) http://www.gravity-works.jp/$1 [R=301,L]