本文详解如何在 nginx 配置中安全、可靠地为 `/admin/users.php` 这一特定 uri 自动添加固定查询参数(如 `?sort_by=id&dir=asc&lim=2&flt=1`),避免重写冲突、无限循环及参数丢失问题,并提供生产环境可用的配置方案。
在 Nginx 中为特定 PHP 资源追加查询参数看似简单,但极易因 location 匹配优先级、rewrite 执行顺序或 flag 语义误用而导致失败——例如参数未生效、请求被错误截断,甚至触发 500 内部重定向循环。根本原因在于:Nginx 的正则 location(如 ~ \.php$)优先级高于前缀 location(如 location /admin/users.php),且 rewrite 指令在同一个 location 块中按序执行、受 break/last 控制流程。
因此,将 rewrite 规则置于独立的前缀 location 块中(如 location /admin/users.php { … })不仅无效,还可能因与后续 PHP 处理块冲突而被跳过。正确做法是:将 rewrite 直接嵌入负责 PHP 解析的正则 location 块内,并严格保证规则顺序与语义一致性。
以下为推荐配置(适配您当前 default.conf 结构):