You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Felix Schumacher <fe...@internetallee.de> on 2016/02/10 10:37:18 UTC

Re: Tomcat Rewrite Valve

Am 29.01.2016 15:34, schrieb Joe Aldrich:
> Hello,
> 
> I am using Tomcat 8.0.28 on Windows 10 and am having a problem with
> the Rewrite Value. I must include the escaped form of an ampersand
> '%26' in the output URL.
> 
> My rewrite.config has the following:
> 
> RewriteCond %{QUERY_STRING} ^(.*&)?SCID=8(&.*)?$
> RewriteRule ^/(product|specs|avail-options|avail-category)\.php$
> /Product.action?select=Model+4+\%26+4C [R=301,L,NE]
> 
> I am escaping the percent sign with a backslash, and I have tried
> using the NE flag. However, Tomcat always is treating the percent
> symbol as a back reference to the above RewriteCond. If I don't have a
> second capture group, then I get a 500 error from a
> NullPointerException.

The current tomcat code does not allow escaping of percent or dollar 
sign.

The parser just looks for percent (or dollar) and applies it either as a 
backreference (when it is followed by a digit), or a map.

I have not found any indication, that escaping is possible with httpd. 
Could you provide a link to the doc, that states it is possible?

If you are willing to build tomcat yourself, you could try the attached 
patch, which will allow escaping of percent signs by specifying them as 
%%.

Your example would thus look like 
"/Product.action?select=Model+4+%%26+4C".

Regards,
  Felix

> 
> I was working with the documentation on this page:
> 
> http://tomcat.apache.org/tomcat-8.0-doc/rewrite.html
> 
> The desired output URL would be:
> 
> http://www.domain.com/Product.html?select=Model+4+%26+4C
> 
> In the example given for the NE flag on the page reference above, the
> percent sign is escaped by a backslash to prevent it from being
> treated as a back-reference. This is not working for me. Instead I
> get:
> 
> http://www.domain.com/Product.action?select=Model+4+\null6+4C
> 
> Where the "null" is due to an empty second back-reference.  I believe
> this is a bug in that it is not escaping the percent sign (making it
> impossible to create the %26 in the redirect URL). Or am I
> misunderstanding something here?
> 
> As a side question, shouldn't an empty back-reference be blank instead
> of adding 'null' to the URL?
> 
> Joseph B Aldrich
> Junior Java Developer
> P: 800.981.1540 | F: 715.254.0996
> 4848 Industrial Park Rd. Stevens Point. 54481
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: users-help@tomcat.apache.org

RE: [PossibleSpam] Re: Tomcat Rewrite Valve

Posted by Joe Aldrich <ja...@kimobility.com>.

>Am 10.02.2016 um 15:23 schrieb Rémy Maucherat:
>> 2016-02-10 15:06 GMT+01:00 Joe Aldrich <ja...@kimobility.com>:
>>
>>>> Am 29.01.2016 15:34, schrieb Joe Aldrich:
>>>>> Hello,
>>>>>
>>>>> I am using Tomcat 8.0.28 on Windows 10 and am having a problem with 
>>>>> the Rewrite Value. I must include the escaped form of an ampersand 
>>>>> '%26' in the output URL.
>>>>>
>>>>> My rewrite.config has the following:
>>>>>
>>>>> RewriteCond %{QUERY_STRING} ^(.*&)?SCID=8(&.*)?$ RewriteRule 
>>>>> ^/(product|specs|avail-options|avail-category)\.php$
>>>>> /Product.action?select=Model+4+\%26+4C [R=301,L,NE]
>>>>>
>>>>> I am escaping the percent sign with a backslash, and I have tried 
>>>>> using the NE flag. However, Tomcat always is treating the percent 
>>>>> symbol as a back reference to the above RewriteCond. If I don't 
>>>>> have a second capture group, then I get a 500 error from a 
>>>>> NullPointerException.
>>>> The current tomcat code does not allow escaping of percent or dollar sign.
>>>>
>>>> The parser just looks for percent (or dollar) and applies it either 
>>>> as a
>>> backreference (when it is followed by a digit), or a map.
>>>> I have not found any indication, that escaping is possible with httpd.
>>>> Could you provide a link to the doc, that states it is possible?
>>> In Apache mod_rewrite it is possible per this documentation:
>>> https://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#quoting
>>
>> Ok, I added an item for that since the mod_rewrite behavior should be
>> implemented:
>> https://bz.apache.org/bugzilla/show_bug.cgi?id=58988
>The fix will be included in 9.0.0.M4 and 8.0.33. The syntax will be the same as with httpd 2.2 using a backslash to quota a percent sign.
>
>@Joe, could you test the current trunk for 8 or 9?

Yes, I will test it out as soon as I get the chance.

Thanks again,
Joe

>Regards,
>  Felix
>> Rémy
>>
>>>
>>>> If you are willing to build tomcat yourself, you could try the 
>>>> attached
>>> patch, which will allow escaping of percent signs by specifying them as %%.
>>>> Your example would thus look like
>>>> "/Product.action?select=Model+4+%%26+4C".
>>>>
>>>> Regards,
>>>>   Felix
>>> I will look into applying the patch as I need to be able to redirect 
>>> to URLs that contain %26 in the query string.
>>> Much thanks,
>>> Joe
>>>
>>>>> I was working with the documentation on this page:
>>>>>
>>>>> http://tomcat.apache.org/tomcat-8.0-doc/rewrite.html
>>>>>
>>>>> The desired output URL would be:
>>>>>
>>>>> http://www.domain.com/Product.html?select=Model+4+%26+4C
>>>>>
>>>>> In the example given for the NE flag on the page reference above, 
>>>>> the percent sign is escaped by a backslash to prevent it from being 
>>>>> treated as a back-reference. This is not working for me. Instead I
>>>>> get:
>>>>>
>>>>> http://www.domain.com/Product.action?select=Model+4+\null6+4C
>>>>>
>>>>> Where the "null" is due to an empty second back-reference.  I 
>>>>> believe this is a bug in that it is not escaping the percent sign 
>>>>> (making it impossible to create the %26 in the redirect URL). Or am 
>>>>> I misunderstanding something here?
>>>>>
>>>>> As a side question, shouldn't an empty back-reference be blank 
>>>>> instead of adding 'null' to the URL?
>>>>>
>>>>> Joseph B Aldrich
>>>>>
>>>>>
>>>>> -------------------------------------------------------------------
>>>>> -- To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
>>>>> For additional commands, e-mail: users-help@tomcat.apache.org

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


RE: [PossibleSpam] Re: Tomcat Rewrite Valve

Posted by Joe Aldrich <ja...@kimobility.com>.
>Am 10.02.2016 um 15:23 schrieb Rémy Maucherat:
>> 2016-02-10 15:06 GMT+01:00 Joe Aldrich <ja...@kimobility.com>:
>>
>>>> Am 29.01.2016 15:34, schrieb Joe Aldrich:
>>>>> Hello,
>>>>>
>>>>> I am using Tomcat 8.0.28 on Windows 10 and am having a problem with 
>>>>> the Rewrite Value. I must include the escaped form of an ampersand 
>>>>> '%26' in the output URL.
>>>>>
>>>>> My rewrite.config has the following:
>>>>>
>>>>> RewriteCond %{QUERY_STRING} ^(.*&)?SCID=8(&.*)?$ RewriteRule 
>>>>> ^/(product|specs|avail-options|avail-category)\.php$
>>>>> /Product.action?select=Model+4+\%26+4C [R=301,L,NE]
>>>>>
>>>>> I am escaping the percent sign with a backslash, and I have tried 
>>>>> using the NE flag. However, Tomcat always is treating the percent 
>>>>> symbol as a back reference to the above RewriteCond. If I don't 
>>>>> have a second capture group, then I get a 500 error from a 
>>>>> NullPointerException.
>>>> The current tomcat code does not allow escaping of percent or dollar sign.
>>>>
>>>> The parser just looks for percent (or dollar) and applies it either 
>>>> as a
>>> backreference (when it is followed by a digit), or a map.
>>>> I have not found any indication, that escaping is possible with httpd.
>>>> Could you provide a link to the doc, that states it is possible?
>>> In Apache mod_rewrite it is possible per this documentation:
>>> https://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#quoting
>>
>> Ok, I added an item for that since the mod_rewrite behavior should be
>> implemented:
>> https://bz.apache.org/bugzilla/show_bug.cgi?id=58988
>The fix will be included in 9.0.0.M4 and 8.0.33. The syntax will be the same as with httpd 2.2 using a backslash to quota a percent sign.
>
>@Joe, could you test the current trunk for 8 or 9?

I tested the truck for Tomcat 8. Escaping '%' or '$' with '\' now works as expected according to the documentation.

Thanks for all the help on this,
 Joe

>Regards,
>  Felix
>> Rémy
>>
>>>
>>>> If you are willing to build tomcat yourself, you could try the 
>>>> attached
>>> patch, which will allow escaping of percent signs by specifying them as %%.
>>>> Your example would thus look like
>>>> "/Product.action?select=Model+4+%%26+4C".
>>>>
>>>> Regards,
>>>>   Felix
>>> I will look into applying the patch as I need to be able to redirect 
>>> to URLs that contain %26 in the query string.
>>> Much thanks,
>>> Joe
>>>
>>>>> I was working with the documentation on this page:
>>>>>
>>>>> http://tomcat.apache.org/tomcat-8.0-doc/rewrite.html
>>>>>
>>>>> The desired output URL would be:
>>>>>
>>>>> http://www.domain.com/Product.html?select=Model+4+%26+4C
>>>>>
>>>>> In the example given for the NE flag on the page reference above, 
>>>>> the percent sign is escaped by a backslash to prevent it from being 
>>>>> treated as a back-reference. This is not working for me. Instead I
>>>>> get:
>>>>>
>>>>> http://www.domain.com/Product.action?select=Model+4+\null6+4C
>>>>>
>>>>> Where the "null" is due to an empty second back-reference.  I 
>>>>> believe this is a bug in that it is not escaping the percent sign 
>>>>> (making it impossible to create the %26 in the redirect URL). Or am 
>>>>> I misunderstanding something here?
>>>>>
>>>>> As a side question, shouldn't an empty back-reference be blank 
>>>>> instead of adding 'null' to the URL?
>>>>>
>>>>> Joseph B Aldrich
>>>>>
>>>>>
>>>>> -------------------------------------------------------------------
>>>>> -- To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
>>>>> For additional commands, e-mail: users-help@tomcat.apache.org

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Re: [PossibleSpam] Re: Tomcat Rewrite Valve

Posted by Felix Schumacher <fe...@internetallee.de>.
Am 10.02.2016 um 15:23 schrieb Rémy Maucherat:
> 2016-02-10 15:06 GMT+01:00 Joe Aldrich <ja...@kimobility.com>:
>
>>> Am 29.01.2016 15:34, schrieb Joe Aldrich:
>>>> Hello,
>>>>
>>>> I am using Tomcat 8.0.28 on Windows 10 and am having a problem with
>>>> the Rewrite Value. I must include the escaped form of an ampersand
>>>> '%26' in the output URL.
>>>>
>>>> My rewrite.config has the following:
>>>>
>>>> RewriteCond %{QUERY_STRING} ^(.*&)?SCID=8(&.*)?$ RewriteRule
>>>> ^/(product|specs|avail-options|avail-category)\.php$
>>>> /Product.action?select=Model+4+\%26+4C [R=301,L,NE]
>>>>
>>>> I am escaping the percent sign with a backslash, and I have tried
>>>> using the NE flag. However, Tomcat always is treating the percent
>>>> symbol as a back reference to the above RewriteCond. If I don't have a
>>>> second capture group, then I get a 500 error from a
>>>> NullPointerException.
>>> The current tomcat code does not allow escaping of percent or dollar sign.
>>>
>>> The parser just looks for percent (or dollar) and applies it either as a
>> backreference (when it is followed by a digit), or a map.
>>> I have not found any indication, that escaping is possible with httpd.
>>> Could you provide a link to the doc, that states it is possible?
>> In Apache mod_rewrite it is possible per this documentation:
>> https://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#quoting
>
> Ok, I added an item for that since the mod_rewrite behavior should be
> implemented:
> https://bz.apache.org/bugzilla/show_bug.cgi?id=58988
The fix will be included in 9.0.0.M4 and 8.0.33. The syntax will be the 
same as with httpd 2.2 using a backslash to quota a percent sign.

@Joe, could you test the current trunk for 8 or 9?

Regards,
  Felix
> Rémy
>
>>
>>> If you are willing to build tomcat yourself, you could try the attached
>> patch, which will allow escaping of percent signs by specifying them as %%.
>>> Your example would thus look like
>>> "/Product.action?select=Model+4+%%26+4C".
>>>
>>> Regards,
>>>   Felix
>> I will look into applying the patch as I need to be able to redirect to
>> URLs that contain %26 in the query string.
>> Much thanks,
>> Joe
>>
>>>> I was working with the documentation on this page:
>>>>
>>>> http://tomcat.apache.org/tomcat-8.0-doc/rewrite.html
>>>>
>>>> The desired output URL would be:
>>>>
>>>> http://www.domain.com/Product.html?select=Model+4+%26+4C
>>>>
>>>> In the example given for the NE flag on the page reference above, the
>>>> percent sign is escaped by a backslash to prevent it from being
>>>> treated as a back-reference. This is not working for me. Instead I
>>>> get:
>>>>
>>>> http://www.domain.com/Product.action?select=Model+4+\null6+4C
>>>>
>>>> Where the "null" is due to an empty second back-reference.  I believe
>>>> this is a bug in that it is not escaping the percent sign (making it
>>>> impossible to create the %26 in the redirect URL). Or am I
>>>> misunderstanding something here?
>>>>
>>>> As a side question, shouldn't an empty back-reference be blank instead
>>>> of adding 'null' to the URL?
>>>>
>>>> Joseph B Aldrich
>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
>>>> For additional commands, e-mail: users-help@tomcat.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Re: [PossibleSpam] Re: Tomcat Rewrite Valve

Posted by Rémy Maucherat <re...@apache.org>.
2016-02-10 15:06 GMT+01:00 Joe Aldrich <ja...@kimobility.com>:

>
> >Am 29.01.2016 15:34, schrieb Joe Aldrich:
> >> Hello,
> >>
> >> I am using Tomcat 8.0.28 on Windows 10 and am having a problem with
> >> the Rewrite Value. I must include the escaped form of an ampersand
> >> '%26' in the output URL.
> >>
> >> My rewrite.config has the following:
> >>
> >> RewriteCond %{QUERY_STRING} ^(.*&)?SCID=8(&.*)?$ RewriteRule
> >> ^/(product|specs|avail-options|avail-category)\.php$
> >> /Product.action?select=Model+4+\%26+4C [R=301,L,NE]
> >>
> >> I am escaping the percent sign with a backslash, and I have tried
> >> using the NE flag. However, Tomcat always is treating the percent
> >> symbol as a back reference to the above RewriteCond. If I don't have a
> >> second capture group, then I get a 500 error from a
> >> NullPointerException.
>
> >The current tomcat code does not allow escaping of percent or dollar sign.
> >
> >The parser just looks for percent (or dollar) and applies it either as a
> backreference (when it is followed by a digit), or a map.
> >
> >I have not found any indication, that escaping is possible with httpd.
> >Could you provide a link to the doc, that states it is possible?
>
> In Apache mod_rewrite it is possible per this documentation:
> https://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#quoting


Ok, I added an item for that since the mod_rewrite behavior should be
implemented:
https://bz.apache.org/bugzilla/show_bug.cgi?id=58988

Rémy

>
>
> >If you are willing to build tomcat yourself, you could try the attached
> patch, which will allow escaping of percent signs by specifying them as %%.
> >
> >Your example would thus look like
> >"/Product.action?select=Model+4+%%26+4C".
> >
> >Regards,
> >  Felix
>
> I will look into applying the patch as I need to be able to redirect to
> URLs that contain %26 in the query string.
> Much thanks,
> Joe
>
> >>
> >> I was working with the documentation on this page:
> >>
> >> http://tomcat.apache.org/tomcat-8.0-doc/rewrite.html
> >>
> >> The desired output URL would be:
> >>
> >> http://www.domain.com/Product.html?select=Model+4+%26+4C
> >>
> >> In the example given for the NE flag on the page reference above, the
> >> percent sign is escaped by a backslash to prevent it from being
> >> treated as a back-reference. This is not working for me. Instead I
> >> get:
> >>
> >> http://www.domain.com/Product.action?select=Model+4+\null6+4C
> >>
> >> Where the "null" is due to an empty second back-reference.  I believe
> >> this is a bug in that it is not escaping the percent sign (making it
> >> impossible to create the %26 in the redirect URL). Or am I
> >> misunderstanding something here?
> >>
> >> As a side question, shouldn't an empty back-reference be blank instead
> >> of adding 'null' to the URL?
> >>
> >> Joseph B Aldrich
> >>
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
> >> For additional commands, e-mail: users-help@tomcat.apache.org
>

RE: [PossibleSpam] Re: Tomcat Rewrite Valve

Posted by Joe Aldrich <ja...@kimobility.com>.
>Am 29.01.2016 15:34, schrieb Joe Aldrich:
>> Hello,
>> 
>> I am using Tomcat 8.0.28 on Windows 10 and am having a problem with 
>> the Rewrite Value. I must include the escaped form of an ampersand 
>> '%26' in the output URL.
>> 
>> My rewrite.config has the following:
>> 
>> RewriteCond %{QUERY_STRING} ^(.*&)?SCID=8(&.*)?$ RewriteRule 
>> ^/(product|specs|avail-options|avail-category)\.php$
>> /Product.action?select=Model+4+\%26+4C [R=301,L,NE]
>> 
>> I am escaping the percent sign with a backslash, and I have tried 
>> using the NE flag. However, Tomcat always is treating the percent 
>> symbol as a back reference to the above RewriteCond. If I don't have a 
>> second capture group, then I get a 500 error from a 
>> NullPointerException.

>The current tomcat code does not allow escaping of percent or dollar sign.
>
>The parser just looks for percent (or dollar) and applies it either as a backreference (when it is followed by a digit), or a map.
>
>I have not found any indication, that escaping is possible with httpd. 
>Could you provide a link to the doc, that states it is possible?

In Apache mod_rewrite it is possible per this documentation:
https://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#quoting

>If you are willing to build tomcat yourself, you could try the attached patch, which will allow escaping of percent signs by specifying them as %%.
>
>Your example would thus look like
>"/Product.action?select=Model+4+%%26+4C".
>
>Regards,
>  Felix

I will look into applying the patch as I need to be able to redirect to URLs that contain %26 in the query string. 
Much thanks,
Joe

>> 
>> I was working with the documentation on this page:
>> 
>> http://tomcat.apache.org/tomcat-8.0-doc/rewrite.html
>> 
>> The desired output URL would be:
>> 
>> http://www.domain.com/Product.html?select=Model+4+%26+4C
>> 
>> In the example given for the NE flag on the page reference above, the 
>> percent sign is escaped by a backslash to prevent it from being 
>> treated as a back-reference. This is not working for me. Instead I
>> get:
>> 
>> http://www.domain.com/Product.action?select=Model+4+\null6+4C
>> 
>> Where the "null" is due to an empty second back-reference.  I believe 
>> this is a bug in that it is not escaping the percent sign (making it 
>> impossible to create the %26 in the redirect URL). Or am I 
>> misunderstanding something here?
>> 
>> As a side question, shouldn't an empty back-reference be blank instead 
>> of adding 'null' to the URL?
>> 
>> Joseph B Aldrich
>> 
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
>> For additional commands, e-mail: users-help@tomcat.apache.org