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
Ответы
Ответ 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;
}