httpd-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tom Evans <tevans...@googlemail.com>
Subject Re: [users@httpd] mod_rewrite double escaping query strings
Date Thu, 02 Oct 2008 15:41:03 GMT
On Thu, 2008-10-02 at 09:19 +0100, Tom Evans wrote:
> On Wed, 2008-10-01 at 09:49 -0500, Justin Pasher wrote:
> > Tom Evans wrote:
> > > Hi all.
> > >
> > > I'm encountering a problem with using mod_rewrite in httpd 2.2.9 to
> > > canonicalize the server name. The problem is that the query string seems
> > > to be double escaped by this process. Here is a sample vhost that
> > > triggers the issue:
> > >
> > > <VirtualHost *:80>
> > >     ServerName sweetums
> > >     ServerAlias foofoo
> > >
> > >     DocumentRoot /data2/development/www/sweetums
> > >     <Directory /data2/development/www/sweetums>
> > >             Order allow,deny
> > >             Allow from all
> > >     </Directory>
> > >
> > >     RewriteEngine On
> > >
> > >     RewriteCond %{HTTP_HOST}  !^sweetums$
> > >     RewriteRule ^/(.*)        http://sweetums/$1 [R=301,L,QSA]
> > >
> > > </VirtualHost>
> > >
> > > So, with this configuration, a request for http://foofoo/bar is
> > > correctly rewritten to http://sweetums/bar , however a request for
> > > http://foofoo/bar?and=grill%25 would be incorrectly rewritten to
> > > http://sweetums/bar?and=grill%2525 .
> > >
> > > Is there any way to prevent this behaviour, or perhaps a better form of
> > > host canonicalization? 
> > >
> > > Cheers
> > >
> > > Tom
> > 
> > Try removing the QSA flag from the RewriteRule. It should only be needed 
> > when you are modifying the query string (which you are not).
> 
> Doesn't modify the behaviour. Did a bit more searching around the
> archives, this was first reported as a bug in 2000 [1], and has never
> been fixed, so there must be a reason for it. Are there any modules that
> will allow me to do host name canonicalization safely?
> 
> Cheers
> 
> Tom
> 
> [1] http://archive.apache.org/gnats/6042

Following up my own email, for the archive, the solution was to add flag
NE to the RewriteRule.

Cheers

Tom

Mime
View raw message