めかりる

カエル、変える、買える、帰る、考える

はてなブログのブログ内検索結果ページだけを "noindex" にするよー

f:id:slashnsk:20170121075621p:plain

ある日、スパム攻撃されたブログ内検索結果が、Google さんに大量にインデックスされるという事件がおきまして。

Google Search Console から「 URL の削除」と、この JavaScript の設置で、なんとかこの件は落ち着きそうです。

つまり、やっぱり( Google の)検索結果に(このブログの)検索結果なんてなくてもいいよね、ってことで、バッサリいこうと。はてなブログさんには困ったもんで、robots.txt も .htaccess も編集できないんですよね。では、どうするか。

ということで、ブログ内検索結果ページのパラメータに反応して meta タグを追加する JavaScript を挿入することに。

ブログ内検索結果ページに "noindex" を追加する JavaScript

はい。

<!-- NoindexesSearchthisBlog -->
<script type="text/javascript">
<!--
var doc = document;
var parameter = location.search;
var q = /q=.*/i;
if (q.test(parameter)) {
	var head = doc.getElementsByTagName("head")[0];
	var meta = doc.createElement("meta");
	meta.setAttribute("name","robots");
	meta.setAttribute("content","noindex");
	head.appendChild(meta);
}
// -->
</script>

簡単なソースの簡単な解説

  • 「 location.search 」で URL のパラメータ部分を取得
    • はてなブログの検索結果ページの場合、「 ?q=~~~ 」にあたります。
  • 「 RegExp.test 」は、取得したパラメータ部分に「 q= 」を含むかを検索
  • 「 q= 」を含むパラメータがあった場合にのみ、head タグ内に、「Google さん、インデックスしないでね」タグを追加

「 test 」の記述箇所を間違ってて、「???」ってなってた。

3/17 追記

理屈の上でも現実でも、ここに follow を記述する必要はありません。これらの属性は、例外の場合に記述するものなので。nofollow は記述してもいいかもしれません。

記述場所

  • 「ダッシュボード」 -> 「デザイン」 -> 「カスタマイズ」 -> 「フッタ」

f:id:slashnsk:20170121075622p:plain

JavaScript の動作中は、ページの読み込みが止まりますので、なるべく後ろに記述します。Googlebot さんは、head タグへの後書きの記述も勘案しますので、問題ありません。

挙動の確認

ブラウザ付属の開発者ツールでパラメータのあるページとないページとで meta タグが追加されたかどうかをチェックします。

Windows で、Vivaldi を含めた Google Chrome 系のブラウザであれば、「 F12 」か「 Ctrl + Shift + I 」で開くアレです。

  • パラメータに「 q= 」があると "noindex" がある

f:id:slashnsk:20170121075623p:plain

  • ないと、ない

f:id:slashnsk:20170121075624p:plain

よくできました。

まとめ

このタイプのスパムは、遅かれ早かれ、Google さんがなんとかするだろうと思ってはいますが。後顧の憂いを断つ意味でも。

あ。もし、Google Search Console で「 URL パラメータ」を編集して、「クロールしない」にしている場合は、「リセット」してください。クロールしてくれなきゃ、Googlebot さんが "noindex" を見てくれないので。

これで、安心! できたら、いーなー。

利用しようと思われた奇特な方は、ぜひ感想などいただきたく。

Q and A

ここまでに書いたことではありますが、改めて。

  • いつから効くのか -> "noindex" を追加する JavaScript の設置直後から
  • いつ スパム URL がなくなるのか -> ???

Google 検索に露出するスパム URL のキャッシュのタイムスタンプは、設置以前のものと思います。これらは Javascript が効力を発揮する前のものです。

f:id:slashnsk:20170409125420p:plain

この Javascript は、設置以降 Google にインデックスされなくなるというものです。Javascript の設置によって、Google にインデックスされるスパム URL の総数の「増加」が止まります。

それまでにインデックスされたスパム URL は、Search Console からの「 URL の削除」か再クローリングされない限り、なくなりません。

f:id:slashnsk:20170409125431p:plain

現在、露出していないスパム URL が、今後、露出することがあります。これらは、再クローリングされるのを待つよりも、当然のことながら、ちまちまと「 URL の削除」をした方が早く消えます。

JavaScript の設置後にキャッシュされたスパム URL が Google 検索に露出した場合、このエントリーは再考する必要があります。ご連絡ください。

その後

ばっちし、きれいになりました。