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