Definitely you have noticed that various external, internal referral URLs appends ?utm_source
like to track track visitors and conversion rates. It is very common in Google Analytics with WordPress. URLs with these query strings like ?utm_source=mailchimp
bypass caching system. Google actually perceives the webpage being slower compared to cached version. In this guide, we will show basic example of how to remove ?utm_source like query strings from url in Nginx WordPress setup from Nginx “virtual hosts” file.
The reason to remove is faster loading, which you can easily test using any webpage test tool like Pingdom, webpagetest.org etc. For example, this test took 2.23 seconds without any query parameter in URL, the same webpage took 4.97 seconds in this test with ?utm_source=mailchimp in URL. So higher difference may have different bias but 1 second delay in loading is expected from uncached webpage. It can go worser after immediate publication of a post as load on server expected to increase.
Remove ?utm_source Like Query Strings From URL In Nginx WordPress
Ofcourse your server should be running Nginx and you should be able to perform SSH. Open Nginx “virtual host” file, which is in the /etc/nginx/sites-available
directory, take that /etc/nginx/sites-available/default
is the file :
---
1 2 3 | cd /etc/nginx/sites-available ls nano default |
Easy example to remove all ?utm_source
is to add :
1 2 3 | if ($args ~* "utm") { rewrite ^(.*)$ $uri? permanent; } |
on that file, run config test :
1 | nginx -t |
and reload Nginx :
1 | service nginx reload |
But in that way, first you have to add too much complicated lot of such keywords, the above is easy and no way bad. You can remove?gclid
you need to add :
1 2 3 | if ($args ~* "gclid") { rewrite ^(.*)$ $uri? permanent; } |
But depending on setup, you possibly will need to couple proxy_pass
and proxy_cache_key
with with. First remove the unwanted GET parameter :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | if ($args ~ (.*)utm_source=[^&]*(.*)) { set $args $1$2; } if ($args ~ (.*)utm_medium=[^&]*(.*)) { set $args $1$2; } if ($args ~ (.*)utm_campaign=[^&]*(.*)) { set $args $1$2; } if ($args ~ (.*)gclid=[^&]*(.*)) { set $args $1$2; } if ($args ~ (.*)&&+(.*)) { set $args $1&$2; } if ($args ~ ^&(.*)) { set $args $1; } if ($args ~ (.*)&$) { set $args $1; } |
Then proxy_pass
and proxy_cache_key
must reference $args
, which possibly needs your hand coding :
1 2 3 4 | location / { proxy_pass http://127.0.0.1:1234$uri$is_args$args; proxy_cache_key "$scheme$host$uri$is_args$args"; } |
Keep it in mind – the above methods can be evil. Why that is written here :
1 | https://www.nginx.com/resources/wiki/start/topics/depth/ifisevil/ |
For many reasons we point towards using Apache2 again, specially for HTTP/2.
Tagged With https://yandex ru/clck/jsredir?from=yandex ru;search;web;;&text=&etext=1827 BKQNa0plkkCI62cqUcLTof5WsNxDCrqo3P4dC7StDFtxIOvAuRoOhCkYHYKZ5Awp 8a552690d246ce472554ece20baf05ebba55f63f&uuid=&state=_BLhILn4SxNIvvL0W45KSic66uCIg23qh8iRG98qeIXme