WordPressの仮想robots.txtはWordPressがルートにインストールされているときしか生成されない。

検索エンジンのクローラーにクロールの範囲を指定できるrobots.txt。WordPressはこのrobots.txtを自動的に生成してくれる。

が、とあるサイトでこのWordPressが生成するrobots.txtにアクセスしようとすると404となってしまった。原因を調べると、WordPressのコアコードの中にその答えが。

// robots.txt -only if installed at the root
$home_path = parse_url( home_url() );
$robots_rewrite = ( empty( $home_path['path'] ) || '/' == $home_path['path'] ) ? array( 'robots\.txt$' => $this->index . '?robots=1' ) : array();

/wp-includes/rewrite.php を見ると「robots.txt -only if installed at the root」つまり、「robots.txtはルートにインストールしたときだけ」。http://example.jp/ にWordPressをインストールした場合 http://example.jp/robots.txt にアクセスすることはできるが、http://example.jp/hoge/ にWordPressをインストールした場合は http://example.jp/hoge/robots.txt にはアクセスできないということだ。