#什么是urlrewrite
如其名,通过这个工具可以通过配置简单地修改url访问策略。比如强制访问带www头的域名等
#使用urlrewrite ##简单流程
- 添加依赖(或jar包)
<dependency> <groupId>org.tuckey</groupId> <artifactId>urlrewritefilter</artifactId> <version>4.0.4</version> </dependency>
- 在WEB-INF目录下添加urlrewrite.xml配置文件。注意是
WEB-INF
目录下,跟一般配置在自己的resources目录下不同,源码中写死了就是在/WEB-INF/urlrewrite.xml
。
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 4.0//EN" "\\urlrewrite4.0.dtd">
<!-- 这个例子是强制访问带www打头的域名地址 -->
<urlrewrite>
<rule>
<name>Canonical Hostnames</name>
<note>
The goal of this rule is to force the use of a particular hostname, in preference to other hostnames which
may be used to reach the same site. For example, if you wish to force the use of www.example.com instead of
example.com, you might use a variant of the following recipe.
</note>
<!-- 只有满足condition的才可以 -->
<!-- 第一个条件为访问完整域名的请求不做(注意notequal)处理,否则会造成循环重定向 -->
<condition name="host" operator="notequal">^www\.example\.com</condition><!-- 注意这里的`.`一定要加反斜杠,谋者会被正则表达式误读 -->
<!-- 空请求不处理 -->
<condition name="host" operator="notequal">^$</condition>
<from>^/(.*)</from><!-- 注意这里的(.*)是将括号内的值当作一个参数传给后续,可设多个,%1表示第一个 -->
<to type="redirect" last="true">http://www.example.com/$1</to>
</rule>
</urlrewrite>
- 在web.xml中添加filter
<filter>
<filter-name>UrlRewriteFilter</filter-name>
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>UrlRewriteFilter</filter-name>
<url-pattern>/*</url-pattern><!-- 所有都做处理 -->
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
- 重启服务器,即可