将带斜杠的变量传递给 nginx

Pass varible with slash into nginx

nginx rewiting 解析变量中的斜杠。 如何使用 nginx 将内容参数传递给斜线 (/)? 例如:/1524/Ri/Hr/p2(Ri/Hr 是参数)

所以谢谢

根据您的 PHP 后端,如果它不依赖于 REQUEST_URI FastCGI 变量(使任何类型的重写规则变得毫无意义,它就是 REQUEST_URI在这种情况下应该进行调整),您可以尝试使用 non-normalized $request_uri 变量:

if ($request_uri ~ /(?<nid>\d+)/(?<label>[^/]+)/p(?<page>\d+)/?(?:\?|$)) {
    rewrite ^ /index.php?nid=$nid&label=$label&page=$page last;
}

此处命名捕获用法而不是编号捕获用法是必不可少的,因为在 ^ 模式的正则表达式匹配期间,所有编号捕获和相应变量将被 rewrite 指令本身覆盖。