Return-Path: Delivered-To: apmail-httpd-users-archive@www.apache.org Received: (qmail 71392 invoked from network); 21 Dec 2010 17:52:34 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 21 Dec 2010 17:52:34 -0000 Received: (qmail 31620 invoked by uid 500); 21 Dec 2010 17:52:31 -0000 Delivered-To: apmail-httpd-users-archive@httpd.apache.org Received: (qmail 31599 invoked by uid 500); 21 Dec 2010 17:52:31 -0000 Mailing-List: contact users-help@httpd.apache.org; run by ezmlm Precedence: bulk Reply-To: users@httpd.apache.org list-help: list-unsubscribe: List-Post: List-Id: Delivered-To: mailing list users@httpd.apache.org Received: (qmail 31591 invoked by uid 99); 21 Dec 2010 17:52:31 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 21 Dec 2010 17:52:31 +0000 X-ASF-Spam-Status: No, hits=-0.7 required=10.0 tests=RCVD_IN_DNSWL_LOW,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of lance@illinois.edu designates 128.174.254.16 as permitted sender) Received: from [128.174.254.16] (HELO sab-fillmore.sab.uiuc.edu) (128.174.254.16) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 21 Dec 2010 17:52:24 +0000 Received: from SAB-FENWICK.sab.uiuc.edu ([128.174.254.19]) by sab-fillmore.sab.uiuc.edu with Microsoft SMTPSVC(6.0.3790.4675); Tue, 21 Dec 2010 11:52:02 -0600 X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Date: Tue, 21 Dec 2010 11:52:02 -0600 Message-ID: In-Reply-To: X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [users@httpd] Re: RewriteCond how to set variable Thread-Index: AcuhMV5aAlz7j82RTY+c/kW07YKWNwABcRxQ References: From: "Campbell, Lance" To: X-OriginalArrivalTime: 21 Dec 2010 17:52:02.0829 (UTC) FILETIME=[C60E4BD0:01CBA137] X-Virus-Checked: Checked by ClamAV on apache.org Subject: RE: [users@httpd] Re: RewriteCond how to set variable My email client displayed what you wanted me to insert incorrectly. I put the code in correctly but it still does not work. I added R=3D301 = to the end so that it would redirect so I could check the apache logs. The apache log shows this: uob017.admin.uiuc.edu - - [21/Dec/2010:11:46:23 -0600] "GET /calendar/Calendar?calId=3D7&skinId=3D2155 HTTP/1.1" 301 417 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13" uob017.admin.uiuc.edu - - [21/Dec/2010:11:46:23 -0600] "GET /calendar/list/ HTTP/1.1" 302 - "-" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13" You can see that the values did not get put into the URL. This is what I have added: # Store value of the calId field, if present RewriteCond %{QUERY_STRING} calId=3D([0-9]+) [NC] RewriteRule .* - [E=3DcalId:%1] # Store value of the skinId field, if present RewriteCond %{QUERY_STRING} skinId=3D([0-9]+) [NC] RewriteRule .* - [E=3DskinId:%1] # If both the calId and skinId fields are present, and XSL=3DNONE is not... RewriteCond %{QUERY_STRING} !XSL=3DNONE [NC] RewriteCond %{calId} . RewriteCond %{skinId} . RewriteRule ^/calendar http://test.webservices.illinois.edu/calendar/list/%{calId}?skinId=3D%{sk= i nId} [L,R=3D301] Thanks, Lance Campbell Software Architect/DBA/Project Manager Web Services at Public Affairs 217-333-0382 -----Original Message----- From: Andrew Schulman [mailto:andrex@alumni.utexas.net]=20 Sent: Tuesday, December 21, 2010 11:05 AM To: users@httpd.apache.org Subject: [users@httpd] Re: RewriteCond how to set variable > Thanks for your response. I get the following error message: > RewriteCond: unknown flag 'E' That's because the E flag is only valid on a RewriteRule statement, not RewriteCond. The mod_rewrite docs show this. So, in order to store a match result in an environment variable, you have to use a degenerate RewriteRule statement, that matches everything and rewrites nothing, but sets an environment variable: RewriteRule .* - [E=3DcalID:%1] .* =3D match everything - =3D rewrite nothing E =3D set an environment variable (I warned you it wasn't pretty.) The RewriteRule documentation explains these things. Here's an annotated version of what I wrote before: # Store value of the calId field, if present RewriteCond %{QUERY_STRING} calId=3D([0-9]+) [NC] RewriteRule .* - [E=3DcalId:%1] # Store value of the skinId field, if present RewriteCond %{QUERY_STRING} skinId=3D([0-9]+) [NC] RewriteRule .* - [E=3DskinId:%1] # If both the calId and skinId fields are present, and XSL=3DNONE is not... RewriteCond %{QUERY_STRING} !XSL=3DNONE [NC] RewriteCond %{calId} . RewriteCond %{skinId} . # ... then rewrite: RewriteRule ^/calendar http://test.webservices.illinois.edu/calendar/list/%{calId}?skinId=3D%{sk= i nId} [L] Try this and see if it works for you. Andrew. =20 > What I used: > RewriteCond %{QUERY_STRING} !XSL=3DNONE [NC] > RewriteCond %{QUERY_STRING} calId=3D([0-9]+) [E=3DCALID:%1] > RewriteCond %{QUERY_STRING} skinId=3D([0-9]+) [E=3DSKINID:%1] > RewriteRule ^/calendar/list > http://test.webservices.illinois.edu/calendar/list/%{CALID}?skinId=3D%{SK= I > NID} [L] >=20 >=20 >=20 > Thanks, >=20 > Lance Campbell > Software Architect/DBA/Project Manager > Web Services at Public Affairs > 217-333-0382 >=20 >=20 > -----Original Message----- > From: Andrew Schulman [mailto:andrex@alumni.utexas.net]=20 > Sent: Tuesday, December 21, 2010 9:41 AM > To: users@httpd.apache.org > Subject: [users@httpd] Re: RewriteCond how to set variable >=20 > > I have the following RewriteCond. I put numbers in front of each line > > for reference: > >=20 > > 1) RewriteCond %{QUERY_STRING} !XSL=3DNONE [NC] > >=20 > > 2) RewriteCond %{QUERY_STRING} calId=3D([0-9]+) [NC] > >=20 > > 3) RewriteCond %{QUERY_STRING} skinId=3D([0-9]+) [NC] > >=20 > > 4) RewriteRule ^/calendar > > http://test.webservices.illinois.edu/calendar/list/%1?skinId=3D%2 > > > > [L] > >=20 > > I just learned that when you use %1 and %2 in line 4 it will only > > reference the last RewriteCond. So in line 4 the %1 comes from line 3 > > but the %2 is blank. I actually wanted the values from line 2 & 3 to > be > > inserted into line 4. > >=20 > > How do you set a local variable in line 2 and 3 so that in line 4 I > can > > reference them? =20 >=20 > This isn't too pretty. >=20 > RewriteCond %{QUERY_STRING} calId=3D([0-9]+) [NC] > RewriteRule .* - [E=3DcalId:%1] >=20 > RewriteCond %{QUERY_STRING} skinId=3D([0-9]+) [NC] > RewriteRule .* - [E=3DskinId:%1] >=20 > RewriteCond %{QUERY_STRING} !XSL=3DNONE [NC] > RewriteCond %{calId} . > RewriteCond %{skinId} . > RewriteRule ^/calendar > http://test.webservices.illinois.edu/calendar/list/%{calId}?skinId=3D%{sk= i > nId} > [L] >=20 > (I'm not sure if your original RewriteRule came through correctly - I > think > I've interpreted it right.) >=20 > I'm not 100% sure about the use of %{calId} and %{skinId} in the > substitution string of the RewriteRule. I think it's right, but try it. >=20 >=20 > --------------------------------------------------------------------- > The official User-To-User support forum of the Apache HTTP Server > Project. > See for more info. > To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org > " from the digest: users-digest-unsubscribe@httpd.apache.org > For additional commands, e-mail: users-help@httpd.apache.org >=20 >=20 > --------------------------------------------------------------------- > The official User-To-User support forum of the Apache HTTP Server Project. > See for more info. > To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org > " from the digest: users-digest-unsubscribe@httpd.apache.org > For additional commands, e-mail: users-help@httpd.apache.org >=20 --------------------------------------------------------------------- The official User-To-User support forum of the Apache HTTP Server Project. See for more info. To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org " from the digest: users-digest-unsubscribe@httpd.apache.org For additional commands, e-mail: users-help@httpd.apache.org --------------------------------------------------------------------- The official User-To-User support forum of the Apache HTTP Server Project. See for more info. To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org " from the digest: users-digest-unsubscribe@httpd.apache.org For additional commands, e-mail: users-help@httpd.apache.org