Re: Массированный rewrite или map ?

Валентин Бартенев vbart на nginx.com
Пн Июн 5 13:51:27 UTC 2017


On Tuesday 30 May 2017 10:53:32 Dee Dee wrote:
> Добрый день всем.
> 
> У меня возникла проблема на, казалось бы, простой задаче. У меня есть
> порядка 300 штук редиректов в разделе блог вида:
> 
> /blog?page=post&blog=blog_EN&id=298  
> /blog/topic1-theme-for-russian-speakers/	
> /blog?page=post&blog=blog_RU&id=300   /blog/webinar-new-staff/
> 
> Как я понимаю, тут location это "blog" а далее пошли уже $args. 
> У меня получилось сделать это через map вида:
> 
> map $args $link {
>         "blog?page=post&blog=blog_EN&id=300" "/blog/webinar-new-staff/";
>          ....
>         default "/blog/";
> }
> 
> и 
> 
> if ($args) {
>                 return 301 $scheme://$host$link;
> }
> 
> Всё работает. Но map из трёхсот записей кажется мне громоздким. 
> Есть ли какие-либо варианты решения задачи, которые более элегантны, чем мой
> ?
> 
> Заранее большое спасибо!
> 

Порядок следования параметров может быть любым, например данные запросы
эквивалентны:

 /blog?page=post&blog=blog_EN&id=298

 /blog?id=298&blog=blog_EN&page=post

 /blog?blog=blog_EN&page=post&id=298 

 /blog?id=298&page=post&blog=blog_EN

 /blog?blog=blog_EN&id=298&page=post

 /blog?page=post&id=298&blog=blog_EN

так что map из 300 записей тут будет мало.

Лучше делать это в приложении.

--
Валентин Бартенев


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