Re: Редирект на необходимый урл в том случае если запрос включает параметры и соответствует паттерну

Иван nginx на kinetiksoft.com
Сб Ноя 5 21:21:43 UTC 2016


Здравствуйте!

В письме от 5 ноября 2016 10:19:49 пользователь Gena Makhomed написал:
> On 05.11.2016 8:43, sysadm wrote:
> > Спасибо за ответ, Гена. Я думал уже над чем-то подобным, но это означает
> > что сколько редиректов - столько ифов у нас появится. Т.е. будет
> > несколько сотен - будет несколько сотен ифов. А если приедет следующий
> > список на несколько тысяч подобных редиректов? Нормально ли это и
> > насколько это скажется на производительности?
> 
> Тогда http://nginx.org/ru/docs/http/ngx_http_map_module.html
> 
> http {
> 
>      map $request_uri $target_uri {
>          /example-category?col=name&filter=filter-var1 /target/link;
>          # ...
>      }
> 

Если сотни или много тысяч, я бы использовал 
map $request_uri $target_uri {
include manythousandsofinclude.inc;
}

Тогда файл с инклюдами можно генерировать скриптом и по завершению reloadить 
nginx.

> server {
> 
>      if ($target_uri) {
>          return 301 $target_uri;
>      }
> 
> > Помимо этого с такой конструкцией нгинксу не нравится синтаксис:
> > nginx: [emerg] invalid number of arguments in "return" directive in
> > /etc/nginx/redirects/ecommerce.conf:2
> > nginx: configuration file /etc/nginx/nginx.conf test failed
> 
> http://nginx.org/ru/docs/http/ngx_http_rewrite_module.html#return
> 
> Синтаксис: return код URL;

Вы в своем первом сообщении rewrite с return просто перепутали и добавили 
permanent, чем ввели топикстартера в заблуждение.

С уважением, Иван.


Подробная информация о списке рассылки nginx-ru