diff --git a/cherrypy/filters/staticfilter.py b/cherrypy/filters/staticfilter.py
index <HASH>..<HASH> 100644
--- a/cherrypy/filters/staticfilter.py
+++ b/cherrypy/filters/staticfilter.py
@@ -40,7 +40,13 @@ class StaticFilter(BaseFilter):
             root = config.get('static_filter.root', '').rstrip(r"\/")
             if root:
                 filename = os.path.join(root, filename)
-        
-        cptools.serveFile(filename)
-        request.executeMain = False
 
+        try:        
+            cptools.serveFile(filename)
+            request.executeMain = False
+        except cherrypy.NotFound:
+            # if we didn't find the static file, continue
+            # handling the request. we might find a dynamic
+            # handler instead.
+            pass
+        
\ No newline at end of file
fix which now allows us to serve static content directly alongside dynamic content. staticFilter won't take over the entire request if it doesn't find the file