Cameron McCormack wrote:
Thorsten Scherler:
Well, the proper way would be to add the pipes to the project pipeline
to just read and pass [exec] X [0] download.cgi BROKEN: No pipeline matched request:
download.cgi
  …
  [exec] X [0]  demo/AppletDemo.java  BROKEN: No pipeline matched
request: demo/AppletDemo.java

To the output as is.

Something like <map:match pattern="download.cgi">
 <map:read src="download.cgi" />
</map:match>
<map:match pattern="demo/AppletDemo.java">
 <map:read src="demo/AppletDemo.java" />
</map:match>

Ross Gardler:
The final approach is a half way between the first two. Create a set of pipelines in your project to match the requests affected by your issue. these will need to be narrow enough to trap all known pages but allow all others to pass through. The downside of this is that it can be difficult to identify a suitable pattern (or set of patterns), I'd recommend using the RE matcher for this unless you only have one or two pages affected by this.

Ok.  Ideally, I’d like that pipeline to match only if that static file
exists in the content directory, because I want to avoid having to
rewrite this matcher whenever I add a new file and have a link to it.

Time to read docs (and ask questions/provide patches to make them clearer please):

Look for <map:select type="exists"> in [1]

Ross

[1] http://forrest.apache.org/docs_0_70/howto/forrest.xmap.html#Definition+of+File-Resolver-Resource