Some small tricks for UrlRewriteFilter

The UrlRewriteFilter library can be considered a good solution for beautifying a site URLs. Having, this in mind and a few more redirection rules, I have given it a try.
The documentation looks pretty good, even if there are some misleading paragraphs:

notequal Not equal to. (i.e. request value != condition value). Note, this operator only work with numeric rule types.

and I’ve been able to set it up in a couple of minutes.
The next task was to create a redirecting rule for the case when a specific attribute is not present on the session or request. And the adventure started [smile/].
First of all, I haven’t been able to see any good logs, and only after digging into the source code and setting the logLevel init-param to LOG4J in the web.xml :

<init-param>
    <param-name>logLevel</param-name>
    <param-value>LOG4J</param-value>
</init-param>

I got the level of detail I needed.
Now, the paragraph about conditions lists the possibility to use the attribute and the session-attribute inside conditions, so I set up the following one:

<condition type="session-attribute"
    name="myAttribute"
    operator="equal"
    next="and">???</condition>

with a big question in my head: how can I specify a null value?. Looking through the logs firstly, and than through the source code I have discovered that if the attribute is not present than the value considered inside the matching rule with be the “” (empty string). But, leaving the condition empty lead to a null matcher. It took me a while, to solve it, but here it is:

<condition type="session-attribute"
    name="myAttribute"
    operator="equal"
    next="and">^$</condition>

the trick being the condition value: ^$ (something that matches only empty values).
I am not sure this is the correct way to set this rule, nor if it is the recommended way, but it was the single way I had UrlRewriteFilter behaving like I’ve expected.

category: , ,

Advertisements

Leave a comment

Filed under Uncategorized

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s