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