Php NGINX URL重写正则表达式模式不匹配
经过一番努力,我取得了一些进步Php NGINX URL重写正则表达式模式不匹配,php,nginx,url-rewriting,Php,Nginx,Url Rewriting,经过一番努力,我取得了一些进步 if ($query_string) { rewrite /([^.]+)$ /$1.php$is_args$args break; } 日志返回 2020/10/31 14:51:17 [notice] 442849#0: *1 "/([^.]+)$" matches "/course/dfdfdf/dfsdfdsf&q
if ($query_string) {
rewrite /([^.]+)$ /$1.php$is_args$args break;
}
日志返回
2020/10/31 14:51:17 [notice] 442849#0: *1 "/([^.]+)$" matches "/course/dfdfdf/dfsdfdsf", client: 220.255.213.94, server: xxx.com, request: "GET /course/dfdfdf/dfsdfdsf?dsfdsf=xxx HTTP/1.1", host: "xxx.com'
但重写仍然没有发生。有什么线索吗
我目前正在将一个php应用程序从Apache移植到Nginx。希望在url重写方面得到一些帮助 我正在尝试将/xxx?param=value重写为/xxx.php?param=value
rewrite /^([^.]+)\? /$1.php$is_arg$args last;
此重写代码位于服务器块中,因为子目录中也有这样的模式需要捕获
NGINX没有捕捉到这种模式。有人能提供建议吗
谢谢
rewrite
指令与不包含查询字符串部分的规范化URI一起工作,\?
regex部分是您的模式永远不会匹配任何请求的原因。此外,rewrite/([^.]+)$/$1.php$是_args$args break/course/dfdfdfdfdf/dfsdsf?dsfdsf=xxx
请求中的code>将为您提供/dfsdsf.php?dsfdsf=xxx
,而不是/course/dfdfdfdfdf/dfsdsf.php?dsfdsf=xxx
。还有一件事,通过rewrite
指令进行重写时,不需要将查询字符串附加到重写的URI以保留查询参数。但是,当您使用返回
指令时,需要执行此操作。此外,我建议您检查或回答。谢谢。我们将查看2个链接。你的建议非常有用。对不起,我错了,rewrite/([^.]+)$/$1.php$is_args$args break在/course/dfdfdfdf/dfsdsf?dsfdsf=xxx
请求中,code>不会给您/dfsdsf.php?dsfdsf=xxx
,$1
捕获变量的值将如您所期望的那样为/course/dfdfdf/dfsdsf
。但无论如何,同样的事情也可以通过更简单的重写^$uri.php中断来实现代码>规则。