已经有similar question,但我需要建议如何将所需的两个部分组合在一起:
我需要以下结构:
location ~* {
if ($args ~ *) {
add_header Link "<$scheme://$http_host$request_uri>; rel=\"canonical\"";
}
}
其中$request_uri
必须是非编码网址(不能使用$uri
)。如何摆脱args
:
map $request_uri $request_uri_path {
"~^(?P<path>[^?]*)(\?.*)?$" $path;
}
进入我的榜样?
答案 0 :(得分:1)
我没有找到任何好的正则表达式,所以我想到了这个:
^(?P<path>.*?)(\?.*)*$
您可以在地图中使用
map $request_uri $request_uri_no_parameters {
"~^(?P<path>.*?)(\?.*)*$" $path;
}
答案 1 :(得分:0)
对于那些稍后需要的人:整个上下文如下:
http {
map $request_uri $request_uri_path {
"~^(?P<path>[^?]*)(\?.*)?$" $path;
}
server {
location ~* {
if ($args ~ .) {
add_header Link "<$scheme://$http_host$request_uri_path>; rel="canonical"";
}
}
}
}