Rewrite URL with parameters

Jonathan Matthews contact at jpluscplusm.com
Thu Dec 5 17:24:46 UTC 2013


On 5 December 2013 17:09, Raphael R. O. <rabeloo at gmail.com> wrote:
> Hi guys,
>
> I'm trying to rewrite an url with a few parameters, but unsuccessfully.

You're almost there ;-)

> What i already tried:
>
> rewrite
> ^/category-body/categories/promotional(.*)utm_source=PromoCode&utm_medium=AddPromo&utm_campaign=PromoCode_AddPromo_moneycampainghttps://www.mysite.com.br/digital-parts/newspaper/recs-xyaw-sazz-qqad-cxae;

"rewrite" doesn't examine query strings, so if the contents of your
query string are required to drive your logic, you'll need to use
other tools instead of (or well as) rewrite.

> and ...
>
> location = /category-body/categories/promotional(.*)$ {

You probably don't want the "=" here. I don't actually know what a
regex ("(.*)") location used alongside "=" will do. I'm slightly
surprised nginx didn't complain on reload/restart ...

Have a read of this section: http://wiki.nginx.org/HttpCoreModule#location

You probably want to use a case-sensitive regex location.

> if ($args ~
> “utm_source=PromoCode&utm_medium=AddPromo&utm_campaign=PromoCode_AddPromo_moneycampaing”)

I'd use a map{} variable inside the if(), personally. The map can use
the same check as that which you have above, but in a way which
abstracts the actual check away from the logic that it drives. This is
just a stylistic change however :-)

HTH,
Jonathan



More information about the nginx mailing list