Hi.
I use Tomcat 8.5.23. My context.xml looks like this:
<?xml version='1.0' encoding='utf-8'?>
<Context docBase="C:\projects\webapp" reloadable="true">
<Valve
className="org.apache.catalina.valves.rewrite.RewriteValve" />
<WatchedResource>WEB-INF/rewrite.config</WatchedResource>
</Context>
My rewrite.config looks like this:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) /index.html [L]
I was hoping it would redirect any url to /index.html except if the url
is matching an existing file. Instead I get this exception with any url:
java.lang.IllegalArgumentException: The resource path [null] is not valid
org.apache.catalina.webresources.StandardRoot.validate(StandardRoot.java:251)
org.apache.catalina.webresources.StandardRoot.getResource(StandardRoot.java:212)
org.apache.catalina.webresources.StandardRoot.getResource(StandardRoot.java:206)
org.apache.catalina.valves.rewrite.ResolverImpl.resolveResource(ResolverImpl.java:156)
org.apache.catalina.valves.rewrite.RewriteCond$ResourceCondition.evaluate(RewriteCond.java:81)
org.apache.catalina.valves.rewrite.RewriteCond.evaluate(RewriteCond.java:233)
org.apache.catalina.valves.rewrite.RewriteRule.evaluate(RewriteRule.java:107)
org.apache.catalina.valves.rewrite.RewriteValve.invoke(RewriteValve.java:313)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803)
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459)
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
java.lang.Thread.run(Thread.java:745)
I debugged a little bit into
org.apache.catalina.valves.rewrite.ResolverImpl. In resolve() it
recognizes REQUEST_FILENAME and then calls request.getPathTranslated()
which returns null however. Stepping into getPathTranslated(), it turns
out that request.getPathInfo() is null altogether, which should contain
the url information. It almost seems like it isn't initialized at that
time.
Is this a bug or am I doing something wrong?
Regards,
Norbert
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org