Maxim Dounin
October 13, 2018 11:36PM
Hello!

On Sat, Oct 13, 2018 at 12:26:12PM -0400, serzh82 wrote:

> Здравствуйте! Я убрал слеш в конце урл с помощью:
> location ~ .+/$ {
> rewrite (.+)/$ $1 permanent;
> }
>
> Но дело в том, что этот код убирает слеш там, где это не нужно. Например,
> есть урл sait.ru/en/?page=2 из-за кода убирается слеш и получается урл
> sait.ru/en?page=2, что дает ошибку 404. Подскажите пожалуйста, как можно
> задать условие, чтобы код не убирал слеш, если после него стоит
> вопросительный знак ? Так возможно сделать?

Произвольные условия делаются с помощью директивы if. Скажем,
убрать слэш, только если в запросе нет аргументов, можно так:

if ($is_args = "") {
rewrite (.+)/$ $1 redirect;
}

Подробнее в документации тут:

http://nginx.org/ru/docs/http/ngx_http_rewrite_module.html#if

Но вообще я бы не рекомендовал заниматься подобными действиями,
особенно - в рамках сколько-нибудь сложных сайтов целиком. В
частности потому, что стандартное поведение nginx'а - это
добавление слэша, если каталог пытаются запрашиваеть без слэша в
конце, и таким образом очень легко можно плучить, например,
бесконечный цикл редиректов. Ну и других проблем, скорее всего,
вы тоже получите - как в рассматриваемом случае со "/en/?page=2".

Адреса со слэшом в конце и без него - это разные адреса. Они
могут быть взаимозаменяемы, если так написан код сайта, а могут и
не быть. Соответственно если хочется поменять одно на другое -
это следует делать локально, и строго там, где соответствующие
адреса точно взаимозаменямемы.

--
Maxim Dounin
http://mdounin.ru/
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

Как задать условие в rewrite?

serzh82 October 13, 2018 12:26PM

Re: Как задать условие в rewrite?

Maxim Dounin October 13, 2018 11:36PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 255
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready