Nginx

帶參數的 NGINX URL 重寫為不帶參數的 URL

  • October 24, 2017

我的伺服器上有 NGINX 背景。我無法弄清楚為什麼我的規則不起作用。

如何重定向或重寫它,以便我可以打開具有相同內容的 URL,例如:

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

如果我有這個 URL,例如:

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

我嘗試了一些解決方案,但沒有奏效:

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;
}

那可能嗎?我是否必須配置我的 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;

引用自:https://serverfault.com/questions/729508