nginxで、wordpressのプラグイン「XML-Sitemap」でrobots.txtが表示されない
http://hoge.com/robots.txt にアクセスしてrobots.txtが「404 Not Found」になってしまう
wordpressをnginxの環境でセットアップしていると、
XML-Sitemapで自動生成されるrobots.txtがで表示されないようです。
apacheの場合は特に意識しなくても大丈夫かと思いますが。
色々とググってみましたが、日本の記事がなかったので、
メモとして残します。
実は、「http://hoge.com/index.php?robots=1」にアクセスすると
robots.txtの内容が表示されます。
なのでrewriteしちゃいます。
nginxで動的にrobots.txtを表示する設定
/etc/nginx/conf.d/hoge.conf
server {
listen 80;
〜省略〜
# nginxとwordpressだと自動生成されるrobotsが404になるのを防ぐ
location = /robots.txt {
rewrite ^/robots\.txt$ /index.php?robots=1 last;
allow all;
log_not_found off;
access_log off;
}
〜省略〜
あとはnginxを再起動
$sudo service nginx configtest
$sudo service nginx restart
実際に「http://hoge.com/robots.txt」の設定確認
User-agent: *
Disallow: /wp-admin/
Sitemap: http://blog.4star.link/index.php?xml_sitemap=params=
上記のように反映されていればOK
シンプル!