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の設定

お気軽にご相談ください

お見積りへ お問い合わせへ