我认为你最好的选择是在进入Spring web的servlet之前,使用UrlRewriteFilter来做到这一点。这将确保您的重定向规则不会影响控制器。
请注意,您在 .war 项目中编写规则,而不是在具有mod_rewrite的 apache 中编写规则。
转到此处查看googlecode上的库项目。
在 urlrewrite 中.xml写:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.1//EN" "http://www.tuckey.org/res/dtds/urlrewrite3.1.dtd">
<urlrewrite>
<rule match-type="regex">
<note>Remove trailing slash</note>
<from>^(.*)/$</from>
<to type="redirect">$1</to>
</rule>
</urlrewrite>
在应用程序的 Web.xml中,添加 :
<filter>
<filter-name>UrlRewriteFilter</filter-name>
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
<init-param>
<param-name>confPath</param-name>
<param-value>/WEB-INF/urlrewrite.xml</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>UrlRewriteFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
请注意,web中过滤器的声明顺序.xml很重要,因此请尝试在春季之前声明此顺序。
当然,这只是UrlRewriteFilter所能做的一小部分。
问候。