2026年5月20日
2026年5月20日
WordPressのrobots.txtを正しく設定する方法
はじめに
Googlebot が管理画面やwp-includesディレクトリをクロールしている、不要なページがインデックスされている、または逆にrobots.txtのDisallowが厳しすぎてサイト全体がインデックスされていない。robots.txtの設定はSEOの基礎として正しく理解することが重要です。
症状・原因
robots.txt関連の問題:
- サイト全体がインデックスされない:
Disallow: /が設定されている - 管理画面がクロールされる:
/wp-admin/のDisallowが漏れている - robots.txtが404になる:物理ファイルが存在せず仮想ファイルも機能していない
- 設定変更が反映されない:物理ファイルとWordPressの仮想robots.txtが競合
解決手順
ステップ1:現在のrobots.txtを確認する
# curlで現在の内容を確認
curl https://yoursite.com/robots.txt
# Googleの確認ツールでも確認可能
# Search Console → 設定 → robots.txtテスター
ステップ2:WordPressのrobots.txtの仕組みを理解する
WordPressはデフォルトで仮想robots.txtを生成します。サイトルートに物理ファイルrobots.txtが存在する場合は物理ファイルが優先されます。
# WordPressが自動生成するデフォルトのrobots.txt
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Sitemap: https://yoursite.com/wp-sitemap.xml
ステップ3:WordPressの仮想robots.txtをカスタマイズする
// functions.php — 仮想robots.txtをカスタマイズ
add_filter('robots_txt', function($output, $public) {
$output = "User-agent: *\n";
$output .= "Disallow: /wp-admin/\n";
$output .= "Disallow: /wp-includes/\n";
$output .= "Disallow: /wp-content/plugins/\n";
$output .= "Disallow: /wp-content/themes/\n";
$output .= "Disallow: /?s=\n"; // 検索結果ページ
$output .= "Disallow: /feed/\n"; // RSSフィード
$output .= "Allow: /wp-admin/admin-ajax.php\n";
$output .= "\n";
$output .= "Sitemap: " . home_url('/sitemap_index.xml') . "\n";
return $output;
}, 10, 2);
ステップ4:物理ファイルを作成する(推奨)
# WordPressルートディレクトリに物理robots.txtを作成
cat > /var/www/html/robots.txt << 'EOF'
User-agent: *
Disallow: /wp-admin/
Disallow: /wp-includes/
Disallow: /wp-content/plugins/
Disallow: /wp-content/themes/
Disallow: /?s=
Disallow: /feed/
Allow: /wp-admin/admin-ajax.php
# 特定のボットを完全ブロック
User-agent: AhrefsBot
Disallow: /
User-agent: SemrushBot
Disallow: /
Sitemap: https://yoursite.com/sitemap_index.xml
EOF
ステップ5:よくある設定パターン
開発中サイト(全クロール禁止):
User-agent: *
Disallow: /
本番サイト(標準設定):
User-agent: *
Disallow: /wp-admin/
Disallow: /wp-includes/
Allow: /wp-admin/admin-ajax.php
Sitemap: https://yoursite.com/sitemap_index.xml
ECサイト(カートページ除外):
User-agent: *
Disallow: /cart/
Disallow: /checkout/
Disallow: /my-account/
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
ステップ6:「検索エンジンによるサイトのインデックスを許可する」を確認
# WP-CLIで設定を確認
wp option get blog_public
# 1 = インデックス許可、0 = 禁止
wp option set blog_public 1
管理画面から確認:
1. 設定 → 表示設定
2. 「検索エンジンがサイトをインデックスしないようにする」のチェックが外れているか確認
注意事項
Disallow: /(スラッシュのみ)はサイト全体をクロール禁止にします。本番サイトには設定しないでください。- 物理robots.txtとWordPressの仮想robots.txtを同時に使うと競合します。どちらか一方で管理してください。
- robots.txtはあくまで「お願い」であり、悪意あるボットは無視する場合があります。
まとめ
WordPressのrobots.txtはfunctions.phpのrobots_txtフィルターでカスタマイズするか、物理ファイルを直接作成して管理します。/wp-admin/と/wp-includes/のDisallowは必須で、検索結果ページ/?s=の除外もSEOに有効です。関連記事:サイトマップの設定方法、Search Consoleの設定