RewriteMap and Query String

Helicon Ape provides support for Apache .htacces and .htpasswd configuration files for Microsoft IIS.
User avatar
Posts: 1
Joined: 19 Jun 2015, 16:19

RewriteMap and Query String

19 Jun 2015, 16:30

I am trying to redirect a collection of URL's to new URLS. Half the URLS have query strings and half do not.

So I created two RewriteMap files, one with querystrings and one without.

In .htaccess, I define the maps first:

RewriteMap miller-map txt:redirect-map.txt [NC]
RewriteMap miller-map-qs txt:redirect-map-q.txt [NC]


I map the non query string requests like this:

RewriteCond %{REQUEST_URI} ^(.+)$ [NC]
RewriteCond ${miller-map:%1|NOT_FOUND} !NOT_FOUND
RewriteRule .? ${miller-map:%1} [NC,NE,R=301,L]

And this works properly, the pages all redirect nicely.

But when I try to use the querystring parameter, it is not matching:

RewriteCond %{REQUEST_URI} ^(.+)$ [NC]
RewriteCond ${miller-map-qs:%1?%{QUERY_STRING}|NOT_FOUND} !NOT_FOUND
RewriteRule ^(.*) ${miller-map-qs:$1?%{QUERY_STRING}} [NC,NE,R=301,L]


When looking at the logs, it appears that it is passing in the query string as a literal (See Log Below). Therefore I am still getting 404 errors and my client is unhappy.

Is there a way to use a RewriteMap and Querystrings together?


Thanks in advance for all your help!

Joe


Log Files Entry:
------------------
38.122.83.3 38.122.83.3 [19/Jun/2015:14:06:02] [website.com/sid#2][rid#44872272/initial] (1) [perdir d:\XXXXXX\XXXXXX\website\] init rewrite engine with /products/tig/product.php
38.122.83.3 38.122.83.3 [19/Jun/2015:14:06:02] [website.com/sid#2][rid#44872272/initial] (5) [perdir d:\XXXXXX\XXXXXX\website\] strip matching prefix: /products/tig/product.php -> products/tig/product.php
38.122.83.3 38.122.83.3 [19/Jun/2015:14:06:02] [website.com/sid#2][rid#44872272/initial] (3) [perdir d:\XXXXXX\XXXXXX\website\] applying pattern ^(.*) to uri products/tig/product.php
38.122.83.3 38.122.83.3 [19/Jun/2015:14:06:02] [website.com/sid#2][rid#44872272/initial] (4) [perdir d:\XXXXXX\XXXXXX\website\] RewriteCond: input='/products/tig/product.php' pattern='^(.+)$' => matched
38.122.83.3 38.122.83.3 [19/Jun/2015:14:06:02] [website.com/sid#2][rid#44872272/initial] (4) [perdir d:\XXXXXX\XXXXXX\website\] RewriteCond: input='${miller-map-qs:/products/tig/product.php?{QUERY_STRING}|NOT_FOUND}' pattern='!NOT_FOUND' => not-matched
38.122.83.3 38.122.83.3 [19/Jun/2015:14:06:02] [website.com/sid#2][rid#44872272/initial] (5) [perdir d:\XXXXXX\XXXXXX\website\] strip matching prefix: /products/tig/product.php -> products/tig/product.php
38.122.83.3 38.122.83.3 [19/Jun/2015:14:06:02] [website.com/sid#2][rid#44872272/initial] (3) [perdir d:\XXXXXX\XXXXXX\website\] applying pattern .? to uri products/tig/product.php
38.122.83.3 38.122.83.3 [19/Jun/2015:14:06:02] [website.com/sid#2][rid#44872272/initial] (4) [perdir d:\XXXXXX\XXXXXX\website\] RewriteCond: input='/products/tig/product.php' pattern='^(.+)$' => matched
38.122.83.3 38.122.83.3 [19/Jun/2015:14:06:02] [website.com/sid#2][rid#44872272/initial] (4) [perdir d:\XXXXXX\XXXXXX\website\] RewriteCond: input='NOT_FOUND' pattern='!NOT_FOUND' => not-matched


Redirect-map.txt
---------------
/products/multiprocess/pipepro_welding_system/ /en/equipment/welders/multiprocess
/products/enginedriven/ /en/equipment/welders/engine-driven
/products/enginedriven/big_blue_400/ /en/equipment/welders/engine-driven
/products/enginedriven/big_blue_500/ /en/equipment/welders/engine-driven

redirect-map-q.txt
---------------
/products/tig/product.php?model=M00152 /en/equipment/welders/tig-gtaw
/products/tig/product.php?model=M08950 /en/equipment/welders/tig-gtaw
/products/tig/product.php?model=M00356 /en/equipment/welders/tig-gtaw
/products/tig/product.php?model=M00224 /en/equipment/welders/tig-gtaw
/products/tig/product.php?model=M00120 /en/equipment/welders/tig-gtaw

User avatar
Posts: 871
Joined: 12 Mar 2012, 09:54

Re: RewriteMap and Query String

23 Jun 2015, 11:21

Hello Joe,

Let's try to have it like this:

RewriteCond %{REQUEST_URI} ^(.+)$
rewriteCond %{QUERY_STRING} ^(.+)$
RewriteCond ${miller-map-qs:(%1\?%2)|NOT_FOUND} !NOT_FOUND
RewriteRule .? ${miller-map-qs:(%1\?%2)} [NC,NE,R=301,L]

Return to Helicon Ape

Who is online

Users browsing this forum: No registered users and 28 guests