Назад | Перейти на главную страницу

Внутренняя перезапись в Nginx не работает, а перенаправляется

Привет, мне нужно правило перезаписи, но я не хочу его перенаправлять и запрашивать один URL-адрес, но загружать другой контент с другого URL-адреса. Итак, я думаю, что флаг last и break в директиве rewrite - хорошее решение. Но он всегда перенаправляется, я ищу проблему, и они заявляют, что если новый URL-адрес не из экземпляра nginx, он будет перенаправлен вместо этого. Вот несколько строк моего конфига:

...
rewrite ^(/\w+/$)(.+\.php) /$2 last;
proxy_pass upstream_name:80;
...

Я спрашиваю, как я могу использовать перезапись, но без перенаправления?

Обновление: например, я хочу создать новый лайк / ссылка / asd, но в моем веб-приложении нет / ссылки / asd. Я хочу, чтобы ресурс загрузки ссылки / link / asd из ссылки / asd. Тогда я думаю, что флаг перезаписи последнего - хорошее решение. Если мое понимание неверно, поправьте меня и объясните. Спасибо

Если вы хотите точно переписать /link/example к /example, где example что угодно, вы можете использовать это rewrite:

rewrite ^/link/(.+)$ /$1 last;

Это также будет соответствовать /link/example/something/else, как .+ соответствует любым символам до конца строки ($). Если вы хотите ограничить, какие символы разрешены в группе захвата, например, исключите / из группы захвата можно использовать [^/]+ обозначение для регулярного выражения.