[wp]noindex設定メモ

地道に。

Googleサーチコンソールと戦う

良くも悪くも勝手にクロールしてくれてるからね、こちらからすると余計なものもインデックスしようとするわけで、支障が出ちゃうこともある。

あらかじめ知ってたらできることもあるし、そうでない、追っかけで都度対応ものもある。

はじめに

noindexを適用する方法は複数ある。

Robots meta タグ、data-nosnippet、X-Robots-Tag の設定 | Google 検索セントラル  |  ドキュメント  |  Google for Developers
検索結果での表示を調整できる meta robots(robots メタタグ)、X-Robots-Tag や data-nosnippet について設定方法や実装例を含めて紹介します。

ページなら<head>内の<meta>で書けば良いし、そういうのがない画像とかのファイルだとヘッダー情報に書き込むことになる。
逆に言えばというか、片方で不安なら両方やっちゃえって考えもできる。

wpだとphp環境だし.htaccessも使えるし、プラグインもあるし、割とどうとでもできる。

その代わりというか、wp上にはいろんなページが生成されるおかげで対策対象がいっぱいあってめんどくさいことになる。

/feed/のnoindex

ここ参照。

【解決】サーチコンソールの feed を除外する手順|WordPress
知りたいこと。解決できること カバレッジでfeed が大量にインデックス未登録されている。対応方法が知りたい カバレッジの除外の数値が大きくなっている。対応方法がしりたい。 この疑問に回答します。WordPressのサイトを長年運用している

導入前にfeedにアクセスして検証→networkからheader情報を確認、導入してもう一度確認するとnoindexが追加されてるのが確認できる。

特定拡張子のnoindex

画像とかpdfとかにインデックスしてくる場合がある。

webページじゃないからヘッダーに書き込むことは無理なので、.htaccessでやることになる。

サイト内すべての特定拡張子(単体)だとこんな感じ。

<Files ~ "\.webp$">
Header set X-Robots-Tag "noindex"
</Files>

複数指定だとこんな感じ。

<Files ~ "\.(webp|jpg|gif|png|ppt|pptx|pdf)$">
Header set X-Robots-Tag "noindex"
</Files>

functions.phpから.htaccessに挿入する場合はこんな感じ。

add_filter('mod_rewrite_rules', function($rules){
    $rules .= <<<_EOT_

<Files ~ "\.webp$">
Header set X-Robots-Tag "noindex"
</Files>
_EOT_;
  return $rules;
});

ついでに言うと、「mod_rewrite_rules」のこの書き方は複数個設置したときに改行をしてくれないので変数内で改行しておく。

そうしないと手前のものと同じ行から書き出しちゃってバグる。

AIO SEO(無料)でできること

有料じゃないとできない内容もあるけど、いくつかできる設定がある。
入れちゃってる場合は活用したほうが良さげですね、多分。

サイトマップから除外する

サイトマップを検索エンジンに登録することで、サイト内のページを検索結果に出やすくするアレがある。
wordpressはプラグインとかでサイト内のページをサイトマップにまとめてくれる。
で、その中にnoindexにしたいものが混ざるのってどうだろうねというね。

特定投稿タイプ、特定タクソノミー単位でサイトマップから除外

「サイトマップ設定」→投稿タイプ「全投稿タイプを含める」のチェックを外す。
WP内の投稿タイプの一覧が出るので、サイトマップに登録したいものだけチェックする。

「サイトマップ設定」→タクソノミー「すべてのタクソノミーを含める」のチェックを外す。
WP内の投稿タイプの一覧が出るので、サイトマップに登録したいものだけチェックする。

「高度な設定」内では特定ページ、特定タームの除外ができる。
とはいえやっぱりサイトマップから外すだけだから、自動で拾われたら載っちゃう。

画像をサイトマップから除外

画像検索で表示されることは基本的に良いことなんだけどね。

「サイトマップ設定」→画像を除外「はい」に変更。

特定ページをnoindexにする

投稿、カスタム投稿、固定ページ問わず。

  1. 編集画面内の「AIOSEO 設定」の「高度な設定」タブを開く。
  2. 「ロボット設定」の「デフォルト設定を使用」のチェックを外す。
  3. 「Robotメタ」の「インデックスなし」にチェックを入れる。

一括指定はできないので頑張る。

特定のカスタム投稿のアーカイブ(記事一覧)をnoindexにする

  1. 「検索の外観」→「アーカイブ」タブを開く
  2. 該当のカスタム投稿「検索結果に表示」→「いいえ」を選択

これにより、以下の感じで<head>にタグが追加される。

		<!-- All in One SEO 4.6.1.1 - aioseo.com -->
		<meta name="description" content="***。 - Page 8" />
		<meta name="robots" content="noindex, nofollow, max-image-preview:large" />
		<link rel="canonical" href="https://***/news/" />
		<link rel="prev" href="https://***/news/page/7/" />
		<link rel="next" href="https://***/news/page/9/" />
		<meta name="generator" content="All in One SEO (AIOSEO) 4.6.1.1" />
        ︙
		<!-- All in One SEO -->

特定のカスタムタクソノミーの一覧ページをnoindexにする

  1. 「検索の外観」→「タクソノミー」タブを開く
  2. 該当のタクソノミー「検索結果に表示」→「いいえ」を選択

タブのところの「?」にカーソルを合わせるとスラッグや投稿タイプが表示されるので、同名で複数作ってたとしても判別がつく。

functions.phpでnoindex

前後で重複する内容もあるけどこんな感じ。

//ヘッダー情報に足す
add_action('template_redirect', function(){
    if ( is_feed() && headers_sent() === false ||is_singular('***') || is_embed()) {
        header( 'X-Robots-Tag: noindex, follow', true );
    }
});

//metaに足す
add_action('wp_head', function(){
    if ( is_singular('***')) {
        echo '<meta name="robots" content="noindex , nofollow" />';
    }
});

//.htaccessに足す
add_filter('mod_rewrite_rules', function($rules){
    $rules .= <<<_EOT_

<Files ~ "\.webp$">
Header set X-Robots-Tag "noindex"
</Files>
_EOT_;
  return $rules;
});

基本的には、全部ここで書いちゃったほうが管理しやすい。
導入してるプラグインとか管理方法により柔軟にやっていきましょう。

一つ言えるのは、head.phpに直書きするよりもこっちのほうが絶対いい。

embed対策

サチコでたまに見かけるembedは埋め込み投稿ページのこと。
サムネとかタイトルとかが載ってるブログカードがこれに当たる。

iframeで引っ張ってるらしく、だから別ページ扱いになってる。

これはphp側で設定するのが良い。

add_action('template_redirect', function(){
    if (is_embed()) {
        header( 'X-Robots-Tag: noindex, follow', true );
    }
});

add_filter( 'wp_robots', 'wp_robots_noindex_embeds' );

こちらで見れるいくつかのソースを見ると<meta>では既にnoindexが入ってる。
それでも効いてないならヘッダー情報に入れましょうね的なアレと、wp_robotsで手引があるのでそれもやる。

設定が効いてるかどうかチェック

ブラウザ上で見ることもできるけど、チェッカーを使ったほうが確実だと思う。

サチコでやりましょう。

サチコで該当WEBサイトを選択した状態でやっていく。

ページ上部の『「***」内の全てのURLを検査』に確認したいURLを入れてEnter。

これで表示される内容(GOOGLEインデックス)は現状のものなので、「公開URLをテスト」をクリック。

いい感じですね。

これはただのテストだから、また申請を出してクロールして反映してもらう。
いつ完了するかはGoogle次第。

コメント

タイトルとURLをコピーしました