- WordPressサイトのGoogle Search Consoleで、「page/74/?cat=-1」のような変なURLがインデックスされていました。
- このような記事一覧ページを検索インデックスから除外するために、functions.phpにコードを追加しました。
1. page/74/?cat=-1とは?(記事一覧ページ)
Google Search Consoleのインデックス済みのページを眺めていたら、変なURLがありました。

https://chiilabo.co.jp/page/74/?cat=-1
このURLは、WordPressサイトの74ページ目を指しています。

URLを詳しく見ていきましょう:
- /page/74/ – 74ページ目であることを示しています。
WordPressでは、記事一覧をページングして表示するのが一般的です。 - ?cat=-1 – 特定のカテゴリーでフィルタリングされていないことを示すクエリパラメータです。
つまり、cat=-1は「全カテゴリー」を意味します。
つまり、このURLは chiilabo.co.jp の記事一覧の74ページ目で、カテゴリーによる絞り込みは行われていないページを指しています。
1-1. page/49/?cat=-1&paged=51とは?(矛盾するページングのクエリ)
さらに、こんなURLもありました。
https://chiilabo.co.jp/page/49/?cat=-1&paged=51

この「&paged=51」は、 51ページ目であることを示す別のクエリパラメータです。
しかし、ここで矛盾が発生しています。
URLのパス部分では49ページ目を指定していますが、クエリパラメータのpagedでは51ページ目を指定しています。
通常、WordPressではページングのための情報はURLのパス部分(/page/49/)か、pagedクエリパラメータのどちらかを使用します。
両方を同時に使うことは一般的ではありません。
chiilabo.co.jpでは、実際にアクセスすると
https://chiilabo.co.jp/page/51/?cat=-1
にリダイレクトされました。
クエリパラメータ paged の方が優先されて正規URLに指定されています。

なんでこんなURLがインデックスされたんだろうね。
2. 検索インデックスから外すコード
記事一覧ページは、Googleの検索結果から除外したいと思います。
どうもCocoonの設定では完全に除外できていないようです。
![[Cocoon] WordPressのタグ一覧ページをインデックスから除外した(noindex)](https://chiilabo.com/wp-content/uploads/2024/05/image-3-2-320x198.jpg)

そこで、WordPressのfunctions.phpで特定のURLを除外するために以下のコードを追加しました。

/** feedページをnoindexにする 2024-05-18
* 記事一覧ページをnoindexにする 2024-05-23
*/
add_action( 'template_redirect', function() {
if ( is_feed()
|| is_paged()
|| is_archive()
|| is_page('contact')
) {
if (headers_sent() === false) {
header( 'X-Robots-Tag: noindex, follow', true );
}
}
} );
これは、以前にfeedをインデックスから除外するときに追加したコードに、条件を追加しています。
2-1. 公開URLをテストした
今後はちゃんとインデックスから除外されるようになりました。

URL は Google に登録できません
インデックス登録を許可?
いいえ、’X-Robots-Tag’ http ヘッダーで ‘noindex’ が検出されました
3. 【ついでに調べた】サイト内検索結果はすでに除外されていた
ついでにサイト内検索の結果(例、/search-result/?q=feed#gsc.tab=0&gsc.q=feed&gsc.page=1)も確認しました。

いいえ、’robots’ メタタグで ‘noindex’ が検出されました
こちらは、すでに「’robots’ メタタグ」でインデックスから除外されていました。

コードに条件を入れる必要があるかなと思ったのですが、不要でした。

![[Cocoon] WordPressのタグ一覧ページをインデックスから除外した(noindex)](https://chiilabo.com/wp-content/uploads/2024/05/image-3-2-320x198.jpg)
