Class TryFilesFilter

java.lang.Object
org.eclipse.jetty.fcgi.server.proxy.TryFilesFilter
All Implemented Interfaces:
javax.servlet.Filter

public class TryFilesFilter extends Object implements javax.servlet.Filter
Inspired by nginx's try_files functionality.

This filter accepts the files init-param as a list of space-separated file URIs. The special token $path represents the current request URL's path (the portion after the context path).

Typical example of how this filter can be configured is the following:

 <filter>
     <filter-name>try_files</filter-name>
     <filter-class>org.eclipse.jetty.fcgi.server.proxy.TryFilesFilter</filter-class>
     <init-param>
         <param-name>files</param-name>
         <param-value>/maintenance.html $path /index.php?p=$path</param-value>
     </init-param>
 </filter>
 
For a request such as /context/path/to/resource.ext, this filter will try to serve the /maintenance.html file if it finds it; failing that, it will try to serve the /path/to/resource.ext file if it finds it; failing that it will forward the request to /index.php?p=/path/to/resource.ext. The last file URI specified in the list is therefore the "fallback" to which the request is forwarded to in case no previous files can be found.

The files are resolved using ServletContext.getResource(String) to make sure that only files visible to the application are served.

See Also: