问题在于你最终如何得到try_files $uri $uri/ /home/index.php?$args /home/index.php?q=$1;,因为它在某些方面没有什么意义。 $1在regex捕获组中使用,但是没有。所以它总是空的。 $args应该与$is_args组合,如果没有参数,?则解析为空字符串。 只有一个de-facto标准结构适用于许多CMS框架,包括WordPress,它是这样的: try_files $uri $uri/ /index.php$is_args$args; 这适用于WordPress位于网站根目录中的情况。 对于您的案例(在home子目录中): location = /home { return 301 /home/;}location /home/ { try_files $uri $uri/ /home/index.php$is_args$args;} 这足以将参数正确地传播到PHP中的$_GET变量。 如果您想优化这个配置,出于性能考虑,您可以查看try_files较少的配置。