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
<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.