带参数的NGINX URL重写为无参数的URL

我的服务器上有一个NGINX背景。 我不明白为什么我的规则不起作用。

如何redirect重写它,以便我可以打开具有相同内容的URL,例如:

http://www.example.com/my_dir/value/ 

如果我有这个url,例如:

 http://www.example.com/my_dir/filename.php?parameter=value 

我尝试了一些解决scheme,但他们没有工作:

 Case #1: location /my_dir/ { if ($args ~* "filename.php/?parameter=value1") { rewrite ^ http://www.example.com/my_dir/$arg_param1? last; } } Case #2: rewrite ^/my_dir/(.*)$ /filename.php?parameter=$1 last; Case #3: location /my_dir { try_files $uri $uri/ my_dir/filename.php?$args; } Case #4: location /my_dir/ { rewrite ^/my_dir/filename.php?parameter=(-+([a-zA-Z0-9_-]+))?\$ /filename.php?parameter=$1 last; } 

那可能吗? 我必须configuration我的PHP文件才能正常工作吗?

有任何想法吗?

谢谢!

访问:domain.com/folder/abc – > domain.com/folder/filenam.php?url=abc

 //this is inside the http block map $request_uri $request_basename { ~/(?<captured_request_basename>[^/?]*)(?:\?|$) $captured_request_basename; } server { [snip] location /folder { try_files folder folder/ /folder/filename.php?url=$request_basename; } } 

只需在你的服务器块中使用这个try_files指令:

 try_files my_dir my_dir/ /my_dir/filename.php?$args;