URL重写或者说是重定向是tomcat的一个非常重要的机制,接下来我将简要的配置一个URL重写示例。
首先你应该有一个可以在tomcat上运行的webapp,你的server.xml(位于$CATALINA_HOME/conf/)<Host>标签正常应该是这样的:
<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
<!-- SingleSignOn valve, share authentication between web applications
Documentation at: /docs/config/valve.html -->
<!--
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
-->
<!-- Access log processes all example.
Documentation at: /docs/config/valve.html
Note: The pattern used is equivalent to using pattern="common" -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t "%r" %s %b" prefix="localhost_access_log" suffix=".txt"/>
</Host>
我们将在server.xml配置我们的webapp重写机制,在server.xml里的<Host>标签配置如下context 标签
<Context docBase="YourWebName" path="/" reloadable="true" crossContext="true">
<Valve className="org.apache.catalina.valves.rewrite.RewriteValve"/>
</Context>
当然了,也可以将这个信息单独放在context.xml全局文件里。
接下来就是配置重写规则了:
只需要在你的webapp WEB-INF目录下创建rewrite.config的配置文件,比如说我们要将http://localhost:8080/ 映射到你的webapp 某个页面: http://localhost:8080/“yourwebname” /test.html, 我们可以这样配置
RewriteRule ^/ /yourwebname/test.html [L]
至此,重写机制配置完成,当你在浏览器中输入http://localhost:8080/, 就可以正常访问test.html页面了。
具体的RewriteRule 语法规则可参考《浅析Apache中RewriteRule和RewriteCond规则参数的详细介绍》