Regex Nginx用问号重写
我正在尝试重写此url(是的,url有一个问号):Regex Nginx用问号重写,regex,nginx,rewrite,Regex,Nginx,Rewrite,我正在尝试重写此url(是的,url有一个问号):domain.com/blog/blogdail?id=20 致此:domain.com/train/my page 这是我目前拥有的,但不起作用: location /blog { rewrite ^/blog/blogdetail(.*)id=20$ $scheme://$host/train/my-page permanent; } 我不知道怎么了。我尝试了location/blog/并在正则表达式中转义/ 你知道我错过了什么吗
domain.com/blog/blogdail?id=20
致此:domain.com/train/my page
这是我目前拥有的,但不起作用:
location /blog {
rewrite ^/blog/blogdetail(.*)id=20$ $scheme://$host/train/my-page permanent;
}
我不知道怎么了。我尝试了location/blog/
并在正则表达式中转义/
你知道我错过了什么吗?或者还有别的办法吗?基本上,我有一堆带有特定id的页面,我需要将它们重写为各自的“基于单词的”URL。你这里的逻辑错误,应该是一个干净的URL,重写为一些奇特的内部URL,而不是相反。你也应该在两者之间保持一种干净的关系 无论如何,nginx在其大多数指令中都不匹配参数,包括location和rewrite。更干净的方法是通过指令
map $request_uri $target_uri {
"~/blog/blogdetail\?id=20$" "/train/my-page";
}
server {
...
location /blog {
rewrite ^/blog/blogdetail$ $scheme://$host$target_uri? permanent;
}
}
告诉你期望的输出是什么。Nginx只重写uri的“路径”部分,而不进行查询。@depsai我的期望输出是问题的第一部分。@AlexeyTen抱歉,我不明白……只重写进程“/blog/blogdail”部分。