urlrewrite基本介绍
时间:
what is urlrewrite ?
UrlRewrite就是我们通常说的地址重写,可实现网页的伪静态化。
example: 浏览器请求:http://localhost/hello.html 服务器将把这个请求重定向为:http://localhost/helloAction?method=hello
why is it ?
- 一:提高安全性,可以有效的避免一些参数名、ID等完全暴露在用户面前,如果用户随便乱输的话,不符合规则的话直接会返回个404或错误页面,这比直接返回500或一大堆服务器错误信息要好的多;
- 二:美化URL,去除了那些比如*.do之类的后缀名、长长的参数串等,可以自己组织精简更能反映访问模块内容的URL;
- 三:更有利于搜索引擎的收入,通过对URL的一些优化,可以使搜索引擎更好的识别与收录网站的信息;
usual urlrewrite tool
大多数的javaweb框架如springMVC、struts都支持url重写,但是不够灵活。 tuckey urlrewrite 下载地址http://tuckey.org/urlrewrite/dist/urlrewritefilter-2.6.zip
usage mode
在web.xml中加入拦截器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15> <filter>
> <filter-name>UrlRewriteFilter</filter-name>
> <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
> <init-param>
> <param-name>logLevel</param-name>
> <param-value>WARN</param-value>
> </init-param>
> </filter>
> <filter-mapping>
> <filter-name>UrlRewriteFilter</filter-name>
> <url-pattern>/*</url-pattern>
> <dispatcher>REQUEST</dispatcher>
> <dispatcher>FORWARD</dispatcher>
> </filter-mapping>
>在WEB-INF目录下创建urlrewrite.xml配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13 > <?xml version="1.0" encoding="utf-8"?>
> <!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite3.2//EN""\\urlrewrite3.2.dtd">
> <urlrewrite>
> <rule>
> <note>123</note>
> <note>123</note>
> <from>/([A-Za-z0-9]+).action</from>
> <to type="forward">/view/$1.jsp</to>
> </rule>
> ...
> <rule></rule>
> </urlrewrite>
>
对urlrewrite.xml节点的简介
需要转化的链接不能直接写在a标签中,需要写在c:url或其他服务器需要解析的变量中,这样才能对其重 新显示
note:注释你所配置的信息(可有多个)
from:代表你在访问网站的时候,浏览器地址栏中显示的URL
to:代表将浏览器中显示的URL转换后的地址,也就是你网站中真正访问的URL
example:
1
2
3
4
5 > <rule>
> <from>^/page/(.*)$</from>
> <to>/page/$1.jsp</to>
> </rule>
>
1 | 我们访问 http://localhost:8080/first |
注意事项
- urlrewrite.xml是utf-8.所以如果你要在rule上加note标签为中文的话,也一定是要utf-8.
- UrlRewriteFilter 最好是配置在web.xml的前面filter上,不然有可能对有些url转变失去作用.
- urlrewrite属性:有仅只有一个,rule属性::至少一个.
- 在写rule的时,如果有多个参数时,中间的连接符号&应该是&
- 对于中文参数要使用(.*)作为参数转义.
- 具体DTD解释请参考:http://wenku.baidu.com/view/e9a44a3467ec102de2bd89fc.html?re=view
- tuckey urlrewrite官网:http://tuckey.org/urlrewrite