Nginx
帶參數的 NGINX URL 重寫為不帶參數的 URL
我的伺服器上有 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;