【FC2ブログ】robots.txtが使えるようになりました

どうしたことでしょう。怒涛の新機能ラッシュ (´・ω・`)
URLが必要な機能はSSL化後に手を付けたほうが良いような気がします。なんでもかんでもリダイレクトで解決できるわけでもないですし。このrobots.txtにしてもSSL化後には URLを書き換える 作業が必要となります。それでも今からすぐ行いたい、という方へ向けての簡単な説明記事。

その前に、robots.txt の管理はとても難しいです。テンプレートhead情報内のmeta要素との整合性も保たなければいけません。また、記述内容に優先順位のルールも存在します。 なんとなく雰囲気で使って良いものではありません。使い方を間違えるとサイト全体に影響が出ます。ですから自身に「知識がある」と考える方だけが行うべき。それ以外の方は手出ししないのが無難。

robots.txt とは

robot(ろぼっと) ではなく robots(ろぼっつ) という複数形です。

ページを巡回(クロール)するロボット(検索bot, クローラー)に対し、アクセスの可否を指定するテキストファイル。

簡単に言うとこういうことですね。ロボット、bot、スパイダーなど色々な呼び方がありますが、ここでは クローラー という表現に統一します。

robots.txt はインデックス拒否ではなくクロール拒否

インデックス 操作ではなくクロール のコントロールです。つまり「そのページにクローラーのアクセスを許可するかどうか」の指定。基本的には クロールの拒否 のために利用します。許可ではなく拒否。

よく混同されるものに metaタグによるインデックス拒否 がありますが、こちらはクロールではなくインデックス。読み進めるうちに混乱するかと思いますので、今回は重要語句として以下を中心とします。

metaタグ --- noindex (属性値) --- インデックスを拒否
robots.txt --- Disallow (ディレクティブ) --- クロールを拒否

インデックス関連のmetaを書く際には noindex を扱う場合がほとんど。そしてrobots.txtを書く場合には Disallow を扱う場合がほとんどです。metaタグはhtmlですので、テンプレートのhead情報内 <head></head> にあります。一方robots.txtはテキストファイルで「ルートディレクトリ」という最上位階層に置くものです。ルートディレクトリを直接編集することはFC2ブログではできませんので、テンプレートとは切り離してFC2個人設定として委ねる形となります。

どんな人が使うのか

クロールを拒否したい明確な理由と明確なページあるいはディレクトリ(FC2ブログ的にはページ種)がある人「ページ種」の意味は後ほど説明します。
ともかく 明確な理由 というのが大事。不明瞭な理由で使うべきものではありません。

robots.txtの使いどころ

先に述べたように、拒否をする というのが前提です。許可するならば特に何もする必要はありません。web上の基本は「クロール許可」「インデックス許可」ですので、何も操作しなければ勝手にそうなります。robots.txtで Allowディレクティブを使用する時は、一部除外設定を行う時のみ。Allowについては読み取らないクローラーもありますので過信しない。というよりも robots.txt自体を過信しないこと です。理由は後述。

何故robots.txtを使うのか

抱えている低品質コンテンツへの対策

どんな人が使うか、と少し被りますが、明確に「クロールされたくない理由」に

  • つぶやいたりぼやいたりしてみただけの特に意味の無い記事
  • 自身のテスト的に投稿しただけの記事

などなどあるかと思います。みなさんよくされますよね。ブログ開設直後の記事は「テスト投稿」「文字を大きくするテスト」とか。そういったページは検索結果に載せたところで意味がありません。

クロールバジェットの浪費を抑える

クロールバジェット というのは、まずクローラーが自身のサイトにやって来ます。訪れた際にどれだけのページ数を探ってくれるか、なのですが。バジェットというのは「予算」を表す英単語です。つまりクローラーにも予算があるんです。ページをいくつまで繰ってくれるかの予算です。仮にバジェット数が5ページだとします。テスト的などうでも良いページで予算5のうち3ページを取られたらどうでしょう。価値が低いと思われるページをクロール拒否設定にしておけば、クローラーはそのページあるいはページ種を無視しますので、効率良く回ってくれることになります。

クロール頻度やバジェット数についてはドメインの価値に左右されます。「FC2ブログ インデックス激減」などで検索するとたくさんの記事が出てきますが、それはクロール頻度の低下であり、と同時にクロールバジェットの低下でもあったわけです。
(現在は回復しているはず)

ただGoogleは 「低品質コンテンツや重複コンテンツにrobots.txtを 使うな。」と言ってます。「重複したならリダイレクトか正規化をしろ。内容がゴミなら書き直せ。」まぁ、そりゃそうなんですが (´・ω・`)
テストページがどうしても必要な人って居ますよね。ほら、私とかさ ←
ただ重複について言えば、スマホ版利用者の場合にはアホほど重複抱えてる方もいらっしゃると思います。その対策としてrobots.txtを使おうと考えているのであれば、それは危険なので辞めましょう。対象コンテンツ固有のシグナルやページランクを失ってしまうかもしれませんよ。
(レスポンシブ かつ スマホ版非表示の方は無関係です)

robots.txtでクロールを拒否すればインデックスされなくなるのか

なりません。
クロールそのものを拒否するわけですから、クロールできなきゃインデックスもできんやろ、という理屈になりそうですが。

既にインデックス済みのページにDisallow

検索結果から自動的に削除されることはありません。概要(description)の表示が「この結果の説明は、このサイトの robots.txt により表示されません」となります。後ほどまた詳しく説明します。

Disallowを無視するクローラーの存在

Googleは拒否、Bingは許可、なんて指定する方は絶対居ないとは言いませんが、居たとしてもマイノリティではないかと思います。大抵の場合には「全クローラーへ向けて」を意味する ワイルドカード指定 を行うのではないでしょうか。ところが例えワイルドカードを使っても、言うことを効かないお行儀の悪いクローラーも存在します。そうしたbadly behavedなクローラーは当然インデックスもしてしまうことがあります。これらがrobots.txtを過信してはいけない理由です。

クロールしないこととインデックスしないことは同義ではありません

metaタグの noindex と、robots.txtの Disallow は併用できない

ここまでrobots.txtの大まかな説明をしましたが、インデックスの方を確実に拒否したいならばmetaタグのnoindexを利用する のが定石です。

クローラーがサイトに辿り着くと、まず最初にrobots.txtの中身を読みます。もしDisallowがあれば、そのページはクロール自体を拒否しているのですから、そのページに対しそれ以上の作業は行いません。つまり クローラーはそのページのmetaタグに何が書いてあるのか読むことすらできない わけです。

既にインデックスされてしまったページに新たに noindex を指定した場合、通常であればクローラーは既存のコンテンツ・インデックス済みコンテンツも目を通しますのでその時点で変更があればそれを適用します。つまり自然とインデックスが消えていきます。ところがこのページに対しrobots.txtでDisallow設定されてしまっては、せっかく書いたmetaのnoindexの効力が届かない。伝わらない。だってメタデータを読ませてもらえないわけだから。

ここでおさらいです。

インデックスを操作するのはmetaタグのnoindexであり、robots.txtのDisallowとは意味や目的が違う

もしも テンプレートのmetaタグでnoindexが記されているのなら、robots.txtでDisallow設定を行ってはいけません。robots.txtを作成する際には必ずmetaタグとの照らし合わせをしてください。robots.txtが使える場面はnoindex指定が されていないページあるいはページ種のみ です。

レスポンシブテンプレートをご利用で かつ スマホ版非表示設定を行っている方(完全レスポンシブ)は、PC版テンプレートの内容を見るだけで済みます。PC版がレスポンシブであってもスマホ版を併用している方(不完全レスポンシブ)は、PC版・スマホ版双方のmeta情報を完全一致させる作業から始めてください。でないと不整合が起こります。当然ながら NOTレスポンシブ + スマホ版 の形での併用者は必須の作業です。metaタグを無視したrobots.txt設定を行ってはいけません

FC2ブログに於ける「ページ種(エリア)」

ディレクトリ とはFC2ブログ的に言い換えれば ページ種 です。
本来は違いますよ。FC2ブログでは結果的にそうなる、という意味です。

前章にしつこく書きましたが、テンプレート内のmetaタグ内容と必ず照らし合わせをしてください。その際にページ種の理解が必要となります。FC2ブログのページ種は以下のようなものがあります。

  • トップページ
  • 個別記事
  • カテゴリ
  • アーカイブ(月・日別)
  • タグ一覧
  • 全記事一覧
  • サイト内検索結果

この中のほとんどは「インデックスして欲しい」ページ種かもしれませんね。もちろん個人観などありますが。この中に 絶対にインデックスすべきでないページ種 がありますが、どれでしょう。

サイト内検索結果です。サイト内の検索結果はクエリを利用したスパムに利用されることが往々にしてあります。ですからインデックスすべきではありません。
* 検索結果のクエリ = 検索に利用したワード
該当が無くともページ自体は表示されます。「該当なし」「見つかりません」あるいは何もナシのページかもしれませんが。ともかくページが表示されたのであれば、そのページは「存在する」ことになり、結果的にインデックスされてしまいます。

いくつかあるページ種の中で、特定の種だけをnoindex指定するためには FC2独自変数のエリア変数 を利用します。

<!--search_area-->
<meta name="robots" content="noindex, nofollow">
<!--/search_area-->

緑の部位がエリア変数で、検索結果を表示する種です。エリア「変数」ですよ。エリア「タグ」でなく。variableとtag、全く意味が違います。

こうしてページ種を選別するエリア変数があるおかげで、多数ある種の中の特定種だけをnoindex、といった切り分けが可能となるわけです。

今度は カテゴリ のページ種に注視してみます。みなさん複数のカテゴリを作成していますよね。例えば

  • 日記
  • 旅行
  • ショッピング

みたいな感じで。このように細分化されていても、ページ種自体は全て等しく「カテゴリ」なんですね。そしてカテゴリの 細分を読み取る変数というのは今のところ存在しません。ということは、例えば「日記」だけをnoindex指定したいと思っても…

<!--category_area-->
<meta name="robots" content="noindex, nofollow">
<!--/category_area-->

こうしてしまえば「日記」はおろか「旅行」「ショッピング」もろともnoindexの効力を受けることになります。
ここで使えるのがrobots.txtです。
今回の実装で一番使えそうなのはここですかね。カテゴリというページ種ではmetaタグで何も指定を行わないようにする。つまりインデックスが許可されている状態です。それを確認した上で、robots.txtの方に細分カテゴリをダイレクトに指定します。さらに「日記の中にあるこの記事とこの記事だけDisallow」といったことも可能。ホントにしつこい女で申し訳ありませんが、カテゴリページ種にnoindexがある場合はやっちゃダメですよ。

ここまでのまとめ

  • テンプレートhead情報内、各ページ種(エリア変数に囲まれた部位)にnoindexが無い場合のみ、対象ページへのrobots.txtによるDisallow指定が有効。
  • Disallowはnoindexとは意味・目的が違うことを知っておく。
  • スマホ版併用者はPC・スマホ双方のhead情報内を整備する必要あり。

最後にrobots.txtのNoindexディレクティブ

あまり知られていないようなのですが、robots.txtにも Noindex というのがあります。noindex ではなく Noindex です。これは一言で言うと、metaタグのnoindexと同じです。この場合にはクローラーはページのmeta内容もちゃんと読みます。meta要素に指定されている follow と nofollow の別も尊重します。

なんで同じ挙動が二通りに分かれているかというと、metaタグの適用というのはページひとつひとつ、つまりページ単位です。robots.txtはディレクトリ単位での指定ができます。でもまぁ、FC2ブログで使うことはほぼ無いでしょう。だってディレクトリ単位ってFC2ではつまるところがページ種単位なわけで。だったらmetaタグでやれば良いわけよ。

えっと。「metaタグはページ単位の参照」の意味わかりますかね?ページ「種」という大括りしかできないはずではないの?と思った方へ蛇足説明しますと、テンプレート内でカテゴリにnoindexとあれば、日記のどのページを開こうともいちいちmetaタグのnoindexが適用さえます。旅行やショッピングのどのページを開いても、やはりいちいちmetaタグnoindexが自動的にくっついてくる。それがFC2ブログエリア変数の仕組みです。metaタグの特性がFC2ブログ変数で制御を受けている状態だ、ってこと。
わかる? ^^;
だから結果的にrobots.txtのディレクトリ指定もFC2エリア変数による切り分けmeta指定も同じってスンポー。

参考までに私がどうするか、ですが。たぶん何もしません ←
テストページだけやる「かも」でもめんどっちかったらやらない (´・ω・`)
やらない可能性99.25%

htmlやってます、アフィリエイトやってます、SEOが気になって仕方がないです、という方以外は何もしなくて良いと思います。要らない記事があるのなら削除した方が話が早いべ (´・ω・`)
検索避け… については見られたくないなら何故公開する?と思う方なのでよくわかんないです。はい。

書き方例要りますか (´・ω・`)
時間があれば追記するかも。とりま息切れ中。

hige
2017/09/15 (Fri) 13:04

なるほど

私はぼんやりとだけ解りました。
ちょっと知ったぐらいではやっちゃいけない事の部類ですね。
でも頭の片隅に残りました(と言っても年寄りの記憶はあてになりませんが)
こうやってかみ砕いて説明していただけると、事の中心がわかって納得します。
やっぱりAkira氏にぶつけてみて良かった。
感謝!!

vanillaice (Akira)
Akira
2017/09/17 (Sun) 09:06

To higeさん

higeさん、おはおーございます ( ゚Д゚)ノ

明確な理由が無い場合には特に設定の必要は無いです。
「何のためか」がわかれば取捨選択できるかと。
こちらこそいつもありがとうございます :)

コメントに関する注意事項
  • テンプレートに関するご質問は各テンプレート専用記事でのみ受付致します。また、よくある質問をまとめているページも事前にご参照ください。
  • 専門的なご質問の場合、記事内容と明らかに関連の無い内容はお控えください(雑談の場合はその限りではありません)
  • 第三者が不快と感じる内容や論調でのコメントはお控えください(性的,高圧的,暴力的など)