urlrewrite顾名思义,就是对URL进行重写,用户得到的全部都是经过处理后的URL地址,这样做我觉得好处有三:
一:提高安全性,可以有效的避免一些参数名、ID等完全暴露在用户面前,如果用户随便乱输的话,不符合规则的话直接会返回个404或错误页面,这比直接返回500或一大堆服务器错误信息要好的多二:美化URL,去除了那些比如*.do之类的后缀名、长长的参数串等,可以自己组织精简更能反映访问模块内容的URL
三:更有利于搜索引擎的收入,通过对URL的一些优化,可以使搜索引擎更好的识别与收录网站的信息
使用urlrewrite的步骤如下:
首页,访问其官网:http://tuckey.org/urlrewrite/,我下载的是最新的目前还处于Beta版的urlrewritefilter-4.0.3,下载后将其中的urlrewrite-4.0.3.jar扔到需使用此功能项目的lib目录中去
其次,在web.xml中加入如下配置:
<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>
其实,urlrewrite其实就是个过虑器,它将会过虑用户的所有请求,符合规则的便对其进行重定向,具体的配置参数的使用方法见官方文档:http://urlrewritefilter.googlecode.com/svn/trunk/src/doc/manual/4.0/index.html
配置好web.xml后将下载的urlrewritefilter-3.2.0中的urlrewrite.xml配置文件放在WEB-INF目录下,这样在使用urlrewritefilter时它便自动到该目录下读取相关的配置了
然后再地址栏输入:http://localhost:8080/Java_Solr/rewrite-status
我配置了个简单的,代码如下:
<rule>
<from>/world/([a-z]+)/([0-9]+)</from>
<to>/index.jsp?uname=$1&id=$2</to>
</rule>
输入:http://localhost:8080/Java_Solr/world/leroy/23;
<rule>
<from>/(.*).html</from>
<to>/index.jsp?id=$1</to>
</rule>
输入:http://localhost:8080/Java_Solr/1.html;
<rule>
<from>^/(.*).html$</from>
<to>/test1/$1.jsp</to>
</rule>
<%
out.print("<h3> the value is:"+request.getParameter("uname")+" "+request.getParameter("id")+"</h3>");
%>
常用的&要用 &来表示。$1,$2代表与你配置正规表达式>/(\w+)/(\w+)/相对应的参数。<to type="forward">默认的是 type="forward"。
<from></from>写上你自己定义的访问地址,通常采用正则表达式的写法;<to type="forward></to>就是实际的访问地址。
比如我们实际的访问地址是: http://www.phome.asia/forum/list.action?id=16931&page=2
而我们想把它重写为:http://www.phome.asia/forum/thread/16931.html?page=2。这样看起来比我们实际的要好看的多。
rule是url重写规则,from是显示出来的地址,to是映射的实际地址,$1是重写参数,可以为多个,()里是匹配的正则表达式。由此即设定了url重写。
转自:http://beyondlovew.iteye.com/blog/432642