wordpress的robots.txt返回404,原来是nginx的配置错误

今天在浏览器中,看下网站的 robots.txt 文件,发现状态吗是 404。不过里面是有正常的内容。检查了一下,最后返现是nginx的配置有问题。

之前的配置 robots.txt

location = /robots.txt { 
    access_log    off;
    log_not_found off;
}

location / {
    try_files $uri $uri/ /index.php?$args;
}

因为不是每个网站,都有 robots.txt 文件。所以就直接关闭了 关于 robots.txt 的访问日志,同时忽略了日志。

这样有一个问题,因为 wordpress 可以动态的生成 robots.txt 文件。

上面的配置,因为服务器没有 robots.txt 文件,所有会返回404, 之后进入第二个 location 通过wp程序生成了内容,所有内容会正常的显示。

正确的写法

location = /robots.txt {
    access_log    off;
    log_not_found off;
    try_files     $uri $uri/ /index.php?$args;
}

这样就可以避免出现 404 。