web-dev-qa-db-fra.com

Comment écrire une réécriture d'URL en nginx?

Je veux que les gens tapent http://www.myweb.com/like/1234456 redirigera vers http://www.myweb.com/item.php?itemid=1234456

J'ai écrit quelque chose comme ça dans la config mais ça ne marche pas.

location = ^~/like/ {
                rewrite ^1234456  ../likeitem.php?item=1234456break;
                return 403;
        }

c'est juste un test. Je n'ai pas encore utilisé la correspondance $.

Je redémarre aussi mon serveur ngnix mais quand même .. il ne fait pas la redirection.

24
murvinlai

Le code ci-dessus ne fonctionnera pas en raison d'un $ manquant et d'une mauvaise utilisation de la commande de retour.

Le code ci-dessous fonctionne avec Nginx, y compris la version 0.8.54.

Le format ci-dessous est:

  1. DesiredURL
  2. URL réelle
  3. Nginx_Rule

Ils doivent être à l'intérieur location / {}

http://example.com/notes/343
http://example.com/notes.php?id=343

rewrite ^/notes/(.*)$ /notes.php?id=$1 last;

http://example.com/users/BlackBenzKid
http://example.com/user.php?username=BlackBenzKid

rewrite ^/users/(.*)$ /user.php?username=$1 last;

http://example.com/top
http://example.com/top.php

rewrite ^/top?$ /top.php last;

Complexe et plus loin

http://example.com/users/BlackBenzKid/gallery
http://example.com/user.php?username=BlackBenzKid&page=gallery

rewrite ^/users/(.*)/gallery$ /user.php?username=$1&page=gallery last;
52
TheBlackBenzKid

Essaye ça,

server {
  server_name www.myweb.com;
  rewrite ^/like/(.*) http://www.myweb.com/item.php?itemid=$1 permanent;
}
2
Satys