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