RewriteRule ^/(layout|skin|font\sfiles)/(.+)$ /$1/$2 [L]
..says to rewrite the URL (and make it the last rule checked) if the URL matches /layout/whatever or /skin/whatever. The URL is rewritten to ... itself. It is the same as if the URL had not been rewritten at all.
There is a nice feature in IIRF where you use a dash to specify "NO REWRITE". This is better than rewriting the URL to itself, because it eliminates unnecessary memory allocations and copies during the engine execution, and also it
can be clearer in the ini file . So your rule would look like this:
# no rewrite at all for these
RewriteRule ^/(layout|skin|font\sfiles)/(.+)$ - [L]
The effect is to "filter out" the matched URLs from further processing by the rewrite engine.
You could use the same technique to "filter out" any URLs that match template.asp, like so:
# if it is template.asp, don't rewrite
RewriteRule ^/template\.asp(.+)$ - [L]
And in that case you don't need the negative lookahead in each of the successive rules. Eg, no need for (?!template\.asp) in each rule.