URL NGINX com reescrita de parâmetro para URL sem parâmetro

1

Eu tenho um plano de fundo NGINX no meu servidor. Não consigo descobrir por que minhas regras não funcionam.

Como posso redirecionar ou reescrevê-lo para que eu possa abrir um URL com o mesmo conteúdo, por exemplo:

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

Se eu tiver esse URL, por exemplo:

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

Eu tentei algumas soluções, mas elas não funcionaram:

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

Isso é possível? Eu tenho que configurar meu arquivo PHP para que ele funcione?

Alguma idéia?

Obrigado!

    
por Fritex 16.10.2015 / 19:47

2 respostas

2

Visite: 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;
    }
}
    
por 24.10.2017 / 11:12
1

Basta usar esta diretiva try_files dentro do seu bloco:

try_files my_dir my_dir/ /my_dir/filename.php?$args;
    
por 16.10.2015 / 20:10