Подтвердить что ты не робот

Nginx переписать БЕЗ изменения URL

Я хочу использовать функцию rewrite на моем сервере nginx.

Когда я пытаюсь "http://www.example.com/1234", я хочу переписать "http://www.example.com/v.php?id=1234" и хотите получить http://www.example.com/1234" в браузере.

Вот файл nginx.conf

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

Когда я пытаюсь выполнить http://www.example.com/1234"

Я хочу...

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

но у меня проблемы...

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

Ответ 1

Ссылка: http://wiki.nginx.org/HttpRewriteModule#rewrite

Если строка замены начинается с http://, то клиент будет перенаправлен, а все последующие директивы перезаписи будут завершены.

Итак, удалите часть http://, и она должна работать:

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

Ответ 2

В моем случае мне нужно было использовать "last", чтобы заставить его работать, потому что у меня были другие правила, которые я хотел применить:

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