I hit a redirection limit when I try to use your technique:
<map:match pattern="*/**.html">
<map:act type="resource-exists" src="{2}_{1}.html">
<map:generate src="{../2}_{../1}.html"/>
<map:serialize type="xml"/>
</map:act>
<map:generate src="{2}.html"/>
<map:serialize type="html"/>
</map:match>
<map:match pattern="*/login">
<map:read mime-type="text/html" src="cocoon:/{1}/content/login.html"/>
</map:match>
