将带斜杠的变量传递给 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
指令本身覆盖。
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
指令本身覆盖。