【解決】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; }
Code language: Nginx (nginx)

きっかけ

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
Code language: plaintext (plaintext)

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

(´・_・`)

Nginxでリライトしちゃえ。

コメント