— robots_txtフィルターフックによる複数Disallow設定まで解説 —
検索エンジンにサイトを正しく認識してもらうために重要なのが robots.txt です。
WordPressサイトでも robots.txt を適切に設定することで、検索エンジンのクローラーに対して
- クロールしてよい場所
- クロールしてほしくない場所
を指示することができます。
この記事では WordPressでrobots.txtを変更する方法と、
robots_txtフィルターフックを使って複数ディレクトリをDisallowに設定する方法を解説します。
robots.txtとは
robots.txtは、検索エンジンのクローラーに対して
クロールの可否を指示するテキストファイルです。
通常はサイトのルートに配置します。
https://example.com/robots.txt
検索エンジンはサイトにアクセスするとまずこのファイルを確認し、
クロールの対象範囲を判断します。
robots.txtの基本構文
robots.txtの基本的な記述例です。
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Sitemap: https://example.com/sitemap.xml
意味
| 項目 | 説明 |
|---|---|
| User-agent | 対象クローラー |
| Disallow | クロール禁止 |
| Allow | クロール許可 |
| Sitemap | サイトマップ |
WordPressのrobots.txtの特徴
WordPressでは robots.txt が存在しない場合でも
仮想robots.txt が自動生成されます。
例えば
https://example.com/robots.txt
にアクセスすると次のような内容が表示されます。
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
つまり
- robots.txtが存在しなくても出力される
- 変更するにはWordPress側で制御できる
という特徴があります。
WordPressでrobots.txtを変更する方法
WordPressでは主に次の方法があります。
- robots.txtファイルを設置
- SEOプラグインを使用
robots_txtフィルターフックを使用
この記事では 3番目の方法を中心に解説します。
robots_txtフィルターフックとは
WordPressには robots_txt フィルターフック が用意されています。
このフックを使うことで
- WordPressが生成するrobots.txt
- その出力内容
を PHPで変更できます。
robots_txtでrobots.txtを追加する基本コード
テーマの functions.php などに次のコードを追加します。
function custom_robots_txt($output, $public) {
$output .= "Sitemap: https://example.com/sitemap.xml\n";
return $output;
}
add_filter('robots_txt', 'custom_robots_txt', 10, 2);
このコードでは
Sitemap
の行を robots.txt に追加しています。
robots_txtで複数ディレクトリをDisallowに設定する方法
複数のディレクトリをクロール禁止にする場合は、
配列でディレクトリを管理すると安全です。
例:
function custom_robots_txt($output, $public) {
$disallow_dirs = array(
'/wp-admin/',
'/wp-includes/',
'/private/',
'/tmp/',
'/test/'
);
foreach ($disallow_dirs as $dir) {
$output .= "Disallow: {$dir}\n";
}
$output .= "Allow: /wp-admin/admin-ajax.php\n";
$output .= "Sitemap: https://example.com/sitemap.xml\n";
return $output;
}
add_filter('robots_txt', 'custom_robots_txt', 10, 2);
このコードのポイント
① Disallow対象を配列で管理
$disallow_dirs
で管理することで
- ディレクトリ追加
- 削除
- 管理
が簡単になります。
② foreachでrobots.txtを生成
foreach ($disallow_dirs as $dir)
により
Disallow: /wp-admin/
Disallow: /wp-includes/
Disallow: /private/
Disallow: /tmp/
Disallow: /test/
が自動生成されます。
出力されるrobots.txtの例
上記コードを使用すると、最終的に次のrobots.txtが生成されます。
User-agent: *
Disallow: /wp-admin/
Disallow: /wp-includes/
Disallow: /private/
Disallow: /tmp/
Disallow: /test/
Allow: /wp-admin/admin-ajax.php
Sitemap: https://example.com/sitemap.xml
robots_txtを使うメリット
| メリット | 内容 |
|---|---|
| FTP不要 | WordPressのみで設定可能 |
| コード管理 | Git管理しやすい |
| 環境ごと制御 | 条件分岐可能 |
例えば
if (WP_ENV === 'development') {
$output .= "Disallow: /\n";
}
のように
開発環境だけクロール禁止にすることもできます。
robots.txt設定時の注意点
次の設定はサイト全体をクロール禁止にします。
User-agent: *
Disallow: /
本番サイトでは絶対に設定しないようにしましょう。
robots.txtの確認方法
robots.txtは次のURLで確認できます。
https://example.com/robots.txt
また
Google Search Console
でもクロール設定を確認できます。
まとめ
WordPressでrobots.txtを制御する方法は次の3つです。
| 方法 | 特徴 |
|---|---|
| robots.txtファイル設置 | 最も一般的 |
| SEOプラグイン | 管理画面で編集 |
| robots_txtフック | WordPressコードで管理 |
特に robots_txtフィルターフックを使う方法は
- WordPressコードとして管理できる
- Gitで管理できる
- 環境ごとの設定が可能
というメリットがあります。
複数ディレクトリをDisallowする場合は
配列 + foreachで出力する方法が最も安全で管理しやすい実装になります。



コメント