ぬにょす(挨拶)。
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内部のリライトルールを確認してみると、エントリーはちゃんとある。
Code language: plaintext (plaintext)robots\.txt$ index.php?robots=1
試しに index.php?robots=1 でアクセスしたら、表示された。
(´・_・`)
Nginxでリライトしちゃえ。
コメント