マルチサイトでの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/
Allow: /wp-admin/admin-ajax.php
Sitemap: https://example.com/sitemap.xml

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

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

robots.txtのチェック

robots.txtがサイトの適切な位置に設置されているかは次のようなチェッカーで確認することができます。
もっとも簡単な方法はSearch Consoleのクロールメニューのrobots.txtテスターを使うことです。

「構文が認識できません」とのエラーの場合はrobots.txtの文字コードを確認ください。
文字コードをBOMなしのUTF-8Nとします。

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の使い方
KB Robots.txtの使い方

WordPressでは自動で仮想robots.txtが出力されます。ユーザに見せる必要のない/wp-admin/と/wp-includes/はここでクローラからインデックスをブロックされます。 この仮想robots.txtではfunctions.phpでルール […]

サブディレクトリ型

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を任意ページに出力する
noindexを任意ページに出力する

SEOでは欠かせないmetaタグのnoindex。 WordPressでは通常の静的HTMLサイトと違いテンプレートから一律にヘッダ情報が読み込まれることから、ページごとにnoindexを付けるのは面倒です。 「All in One SEO Pack」や「Wo […]

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

コメントを残す

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


The reCAPTCHA verification period has expired. Please reload the page.



関連記事