Disable / ignore / redirect URLs with query strings to reduce blog spam

Maxim Dounin mdounin at mdounin.ru
Fri Jul 8 17:07:51 MSD 2011


Hello!

On Fri, Jul 08, 2011 at 02:47:18PM +0400, Igor Sysoev wrote:

> On Jul 8, 2011, at 13:17 , TinyApps.Org wrote:
> 
> > Hello all,
> > 
> > Is it possible to disable / ignore / redirect all URLs
> > with any query string? My site doesn't use query strings,
> > and is suffering from blog spam links as described by
> > these folks:
> > 
> > How do I remove spam from my blog's Google Blog Search results?
> > http://www.google.com/support/forum/p/Webmasters/thread?tid=126184f38f712907&hl=en
> > 
> > Google has the wrong (somewhat vulgar) URL for my site!
> > http://www.google.com/support/forum/p/Webmasters/thread?tid=1e30ee39f9e82b4d&hl=en
> > 
> > URL/Query String Spam - Poor Man's Referer Spam?
> > http://www.dgibson.net/blog/article.cfm/articleid=7/URLQuery-String-Spam---Poor-Mans-Referer-Spam
> > 
> > This Apache .htaccess example < http://briancray.com/2010/03/18/htaccess-hack-remove-url-query-strings/ >
> > removes all query strings like so:
> > 
> > RewriteEngine On
> > RewriteCond %{QUERY_STRING} !="" 
> > RewriteRule ^(.*)$ /$1? [R=301,L]
> > 
> > Can something similar be done in nginx? Also, might it be
> > better to simply return a 204 (or some other status code)
> > to reduce server load?
> 
> server {
>     if ($args != '') {
>         return  301  $uri;

This will not work for complex $uri which requires encoding.

>         # OR
>         # rewrite  ^  $uri  permanent; 

Correct rewrite would be

          rewrite  ^(.*)  $1?  permanent;

($1 instead of $uri to make sure it will be properly escaped, and 
"?" to avoid query string append).

>     }
>     ...

Maxim Dounin



More information about the nginx mailing list