マルチサイトでのrobots.txt

ヘッダ画像

マルチサイトでのrobots.txt

WordPressでのマルチサイト化に伴いわたしの場合は実際の運用に向けていくつかのハードルがありましたが、ふと疑問に思ったのがrobots.txtでした。

robots.txtの重要性

robots.txtはサイト内の検索エンジンのクローラーをスムーズに巡回させるための案内役であり、不要なコンテンツをインデックスさせないという役割も持っています。

パンダアップデートは重複コンテンツや低品質コンテンツ(内容が薄いなど)を嫌います。このため、カテゴリーやアーカイブなど、とかく類似コンテンツを生成しがちなWordPressにとっては、とくに重要な要素を担っていると思われます。

※robots.txtの処理があまりにも複雑な場合、クローラーがスキップしてしまうということもあるようですので、基本の骨格的なものを定義して、CMS固有の重複コンテンツ対策にはcanonical属性を使うのがよいかもしれません。

robots.txtの書き方自体が分からない方には以下のようなサイトが参考になると思います。

robots.txtの書き方(保存版)

WordPressでのrobots.txt

WordPressでサイト構築した場合、robots.txtはどうすればよいのでしょう?
実はWordPressでは特に何も設定しなくても標準機能で仮想robots.txtというものを出力します。(サーバ上に実際にファイルは存在しない)
内容としては下のように管理ファイルなどにアクセスさせないという最低限の記述となっています。

User-agent: *
Disallow: /wp-admin/
Disallow: /wp-includes/
Sitemap: http://example.com/sitemap.xml

それでは自分のルールが加えられないと思われるかもしれませんが、心配はいりません。WordPressサイトであっても通常のHTMLサイトと同様にサーバのルート階層にrobots.txtをアップロードした場合はそちらが優先されます。
ですから、ルールを加えたければ、自前のrobots.txtをサーバにアップロードすれば問題ありません。
また、robots.txt用プラグインを使うことでも簡単にルールを加えることができます。

※ちなみに、functions.phpに記述することで仮想robots.txtに追記することができるのですが、テーマ変更に対応できませんし、数が多くなると煩雑なため、ここでは取り上げません。

robots.txtのチェック

robots.txtがサイトの適切な位置に設置されているかは次のようなチェッカーで確認することができます。
もっとも簡単な方法はSearch Console(旧ウェブマスターツール)のクロールメニューのrobots.txtテスターを使うことです。
Search Consoleを使っていない場合は以下のようなサイトからでもチェックできます。
(解析を行うURLにチェックしたいサイトのトップURLを入力ください)

robots.txt解析ツール

上記のようにWordPressの場合は特に自分で設置していなくても、ルート直下にrobots.txtが確認できると思います。

マルチサイトの場合はどうすればよい?

サブドメイン型

通常のサブドメインサイトの場合はディレクトリが分かれていると思いますので、そのルートにrobots.txtを置けばよいので、とくに問題はありません。しかし、WordPressのマルチサイトの場合は「サブドメインのルートはどこ?」という話になりますね。

自分でrobots.txtの設定をしていない場合には仮想robots.txtが以下のようなURLで認識されます。

http://aaa.example.com/robots.txt

サブドメイン型では仮想robots.txtを書き換えることができるKB robots.txtなどのプラグインを使うのが便利です。(もちろんシングルサイトのWordPressにも使えます)

KB robots.txtの使い方

サブディレクトリ型

robots.txtはドメインのルート階層にしか置くことができないため、こちらは別のサイトであってもルートのrobots.txtに加えます。

WordPressに限らずですが、サブディレクトリ型サイトexample.com/bbb/のrobots.txtはドメインルートになります。
〇→http://example.com/robots.txt
×→http://example.com/bbb/robots.txt

最後に例としてサブディレクトリ型でサイト構築している価格コムを見てみます。
やはり、ルートのrobots.txtにすべてルールとそれぞれのサイトマップへのリンクが記述してあります。
サブディレクトリ型のrobots.txtとして大変参考になります。

User-Agent: *
Allow: /auth/profile/
Disallow: /ksearch/
Disallow: /auth/
Disallow: /kuruma/used/uc_jump.asp*
Disallow: /script/segment/
Disallow: /prdsearch/pricehistory_data/
Disallow: /kakakuad/
Disallow: /history/
Disallow: /jump/
Disallow: /ad/
Disallow: /card/jump.asp*
Disallow: /ria/
Disallow: /item/*/localshops/
Disallow: /localshops/shop/*/print/
Disallow: /loan/housing-loan/jump/
Disallow: /BBSsearch/

sitemap: http://kakaku.com/sitemap_kakaku_index.txt
sitemap: http://kakaku.com/sitemap_system_product-item_index.txt
sitemap: http://kakaku.com/sitemap_system_search-item_index.txt
sitemap: http://kakaku.com/sitemap_system_product-itemlist_index.txt
sitemap: http://kakaku.com/sitemap_system_search-itemlist_index.txt
sitemap: http://kakaku.com/sitemap_system_product-images_index.txt
sitemap: http://kakaku.com/sitemap_system_product-kurumaitem_index.txt
sitemap: http://kakaku.com/sitemap_system_product-kurumaitemc_index.txt
sitemap: http://kakaku.com/sitemap_system_product-kurumagrade_index.txt
sitemap: http://kakaku.com/sitemap_system_chosatai-article_index.txt

最新の追記:コンテンツ内構成ファイルを隠さない

最新の追記情報です。
最近のGoogleではJavascriptなどプログラムの内容も解析できるようになっています。
そして基本的に「コンテンツ内構成ファイルを隠すな」という趣旨のことをいっているようですね。

WordPressなどのCMSの場合、コアの部分まではクロールさせる必要はないかもしれませんが、低品質や重複を理由に検索結果に表示する必要がないというコンテンツページはrobots.txtでブロックするのではなく、メタタグのnoindexを使う方がよさそうです。

WordPressで任意のページにnoindexをつける方法は下記をご覧ください。

noindexを任意のページに出力する

※非公開の会員専用コンテンツなどはrobots.txtで一切のクロールを拒否した方がよいです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

「トップに戻る」ボタンでスマホでのユーザビリティアップ!

ウェブサイト上でコンテンツを下にスクロールさせると「トップに戻る」ボタンが出現して、クリックするとビ […]

WordPressで現在のページ表示に使用しているテンプレートをすべて知る

WordPressでは、投稿タイプに応じてデフォルトの構成テンプレートが適用されます。 ただし、プラ […]

メールフォームプロCGIをWordPressに設置

WordPressのフォームについて、定番のContact Form7をはじめ、いろいろとプラグイン […]

ページ内目次を見出しタグから自動生成

Wikiをはじめ、記事の先頭にリストの目次(インデックス)をつけているサイトを目にしたことがあると思 […]