Patch that fails without the exclude pattern fix. All Solr tests pass on trunk, and manual testing works, including the old and new admin UIs.
The testing issue AFAICT is that HTTPServletRequest.getServletPath() returns depends on the pattern used:
Returns the part of this request's URL that calls the servlet. This path starts with a "/" character and includes either the servlet name or a path to the servlet, but does not include any extra path information or a query string. Same as the value of the CGI variable SCRIPT_NAME.
This method will return an empty string ("") if the servlet used to process this request was matched using the "/*" pattern.
So in JettySolrRunner, the servlet path is returned as the empty string, but in manual testing, it's not.
The attached patch matches exclude patterns against the concatenation of the servlet path and all following path segments.
Anshum Gupta pointed me to http://stackoverflow.com/a/21046620, which explains the situation well, with an example.