Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex Nginx用问号重写_Regex_Nginx_Rewrite - Fatal编程技术网

Regex Nginx用问号重写

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/并在正则表达式中转义/ 你知道我错过了什么吗

我正在尝试重写此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/
并在正则表达式中转义/


你知道我错过了什么吗?或者还有别的办法吗?基本上,我有一堆带有特定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”部分。