WordPressでの robots.txt
に関する処理を調べてみました。
少しネットで調べてみると「robots.txt
を自分で作成してルートディレクトリに置いておけば、それが使われるし、なければ WordPress が動的に生成して返してくれる」という情報が得られるわけですが、実際どういう挙動になっているのか分からないと不安だという私のような人のために調査した結果を書いておきます。
1. 今回調べた環境
- WordPress 4.5.3–ja
- Apache
2. 処理の流れ
- ブラウザから
robots.txt
へのリクエストがやってくる。 -
robots.txt
があればそれにアクセスさせて終わり。なければ、index.php
にアクセスさせる。- 処理が書いてあるファイル:
.htaccess
(mod_rewriteを利用している)
- 処理が書いてあるファイル:
robots.txt
へのアクセスであれば、クエリ変数 “robots” をセットする(値は1)。- 処理が書いてあるファイル : wp-includes/class-wp-rewrite.php
robots.txt
へのアクセスである場合、do_action( 'do_robots' )
を実行する。robots.txt
へのアクセスであるかどうかの判定に、クエリ変数 “robots” が使用される。- 処理が書いてあるファイル : wp-includes/template-loader.php
do_robots()
関数が実行される- バーチャルな
robots.txt
の内容をブラウザへ出力する。 - 管理サイトの[設定] – [表示設定] で、「サイトをクローラに公開する」にチェックを入れていない場合は、おおそよ以下の内容を生成して出力する。(全てのクローラに対して、全てのページを公開しない)
User-agent: * Disallow: /
- チェックが入っている場合(パスは設定によって変わります)(/wp-admin/ は公開しないが、/wp-admin/admin-ajax.php は公開する)
User-agent: * Disallow: /wp-admin/ Allow: /wp-admin/admin-ajax.php
- 処理が書いてあるファイル: wp-includes/functions.php
- バーチャルな
3. あとがき
他のCMSはよく知らないんですが、シンプルでよい仕組みだと思います。