为什么 nginx 不喜欢我的 $args?

为什么 nginx 不喜欢我的 $args?

我有一个位于 的 WordPress 网站mysite.com/blog,其文件位于/var/www/mysite/wordpress。为什么当我访问 时,只有从 中mysite.com/blog/test删除时,我的嵌套位置块才会被命中?$argstry_files

server {
    server_name mysite.com;

    location /blog {
        alias /var/www/mysite/wordpress;
        try_files $uri $uri/ /blog/index.php$args;

        location ~ \.php {
            # This is only reached if I remove $args from try_files
            return 401; # For testing purposes 
        }
    }
}

以下是日志中的相关错误:

"/usr/share/nginx/html/index.php" failed (2: No such file or directory)

答案1

因为你忘记了和?之间。便利变量在必要时包含,而当没有查询字符串时则为空。index.php$args$is_args?

try_files $uri $uri/ /blog/index.php$is_args$args;

当然,使用 WordPress 时你$args根本不需要使用,因为它会在其他地方获取查询字符串:

try_files $uri $uri/ /blog/index.php;

足够了。

看来您正在使用try_fileswithalias指令。这是长期存在的错误在 nginx 中,请改用root指令。

相关内容