为什么不像我的$参数nginx?

我有一个位于mysite.com/blog的WordPress网站,其文件位于/var/www/mysite/wordpress 。 为什么当我访问mysite.com/blog/test ,如果我从try_files删除了$args ,那么我的嵌套位置块是否会被try_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)

因为你忘了?index.php$args之间。 便利variables$is_args包含一个? 如有必要,在没有查询string时为空。

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

当然,对于WordPress,您根本不需要使用$args ,因为它在别处获取查询string:

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

足够了。

看起来你正在使用带有alias指令的try_files 。 这是nginx中的一个长期存在的错误 ,请改用root指令。