web-dev-qa-db-fra.com

réécriture nginx SANS modifier l'URL

Je veux utiliser la fonction de réécriture sur mon serveur nginx.

Lorsque j'essaie " http://www.example.com/1234 ", je veux réécrire " http://www.example.com/v.php?id=1234 "et souhaitez obtenir" http://www.example.com/1234 "dans le navigateur.

Voici le fichier nginx.conf

...
  location ~ /[0-9]+ {
      rewrite "/([0-9]+)" http://www.example.com/v.php?id=$1 break;
  }
...

Quand j'essaye " http://www.example.com/1234 "

Je veux ...

url bar in browser : http://www.example.com/1234
real url : http://www.example.com/v.php?id=1234

mais j'ai des ennuis ...

url bar in browser : http://www.example.com/v.php?id=1234
real url : http://www.example.com/v.php?id=1234
24
user1850593

Référence: http://wiki.nginx.org/HttpRewriteModule#rewrite

Si la chaîne de remplacement commence par http: //, le client sera redirigé et toutes les autres directives de réécriture seront terminées.

Supprimez donc la partie http: // et cela devrait fonctionner:

location ~ /[0-9]+ {
        rewrite "/([0-9]+)" /v.php?id=$1 break;
}
37
Chuan Ma

Dans mon cas, je devais utiliser 'last' pour le faire fonctionner car j'avais d'autres règles que je voulais appliquer:

location ~ /[0-9]+ {
    rewrite "/([0-9]+)" /v.php?id=$1 last;
}
0
marcostvz