【解決】WordPress+Nginxでrobots.txtが404

WordPress

ぬにょす(挨拶)。

WordPressを使ってて、robots.txtにアクセスするも 404 Not Found なページが表示されてしまう場合、/index.php?robots=1 へアクセスするよう仕向けてあげると良いですよ、というお話です。

WebサーバーにNginxを使っているのでNginxでの回避策になりますが、Apacheでも .htaccess の Rewrite ルールで同様のことができるかと思います。

結論

Nginxの設定ファイルで robots.txt へのアクセスを /index.php?robots=1 へ変更することで解決しました。

location = /robots.txt {
  rewrite ^/robots\.txt$ /index.php?robots=1 last;
  allow all;
  log_not_found off;
  access_log off;
}

きっかけ

WordPressのGoogle XML SitemapsプラグインでHTML版のサイトマップを生成させているんだけど、Google Search Consoleさんから”sitemap.htmlにnoindexタグがあるけど?”というメッセージが送られてきた。

robots.txtで明確にクロールを禁止すっかと思ってサイトのrobots.txtにアクセスしたら404 Not Found。

Rewrite Rules InspectorプラグインでWordPress内部のリライトルールを確認してみると、エントリーはちゃんとある。

robots\.txt$    index.php?robots=1

試しに index.php?robots=1 でアクセスしたら、表示された。

(´・_・`)

Nginxでリライトしちゃえ。

コメント

タイトルとURLをコピーしました