urlrewrite的使用

来源:互联网 发布:java 网页开发 编辑:程序博客网 时间:2024/06/03 00:08

1urlrewrite简介

urlrewrite可实现动态url伪静态化,是对url地址进行重写的一个框架,比如能将地址/test/status/重写成/rewrite-status

struts框架做的项目,url中带有.do.action,内行的人一瞅就知道是struts。要想知道如何去掉.do.action,那就请看本文吧!

实现url重写的好处如下(1)

(1) 有利于搜索引擎的抓取;

(2) 简化url地址,隐藏内部url结构;

 

2.下载Urlrewrite

urlrewrite的下载地址: http://tuckey.org/urlrewrite/此地址已被和谐下载需翻墙。目前最新版本是 3.2

下载成功后的东西是一个zip文件,即urlrewritefilter-3[1].2.0.zip。解压后有两个文件:一个是xml文件,一个是jar包,说明如下:

urlrewrite-3.2.0.jar : urlrewritejar

urlrewrite.xml : urlrewrite的参考配置文件

 

3urlrewrite结合项目的使用

(1)urlrewrite-3.2.0.jar导入项目;

(2)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>

</filter-mapping>

(3)在项目的WEB-INF下新建xml文件,文件名必须是urlrewrite.xml,内容如下:

<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.2//EN"

        "http://tuckey.org/res/dtds/urlrewrite3.2.dtd">

<urlrewrite>

    <rule>

        <from>^/rc/([0-9]+)$</from>

        <to>/jumpSearch.do?method=toCardDetail&amp;idtagno=$1</to>

    </rule>

</urlrewrite>

注:上面的 “$1” 代表正则表达式 “([0-9]+)”  , url中的 ”&” 必须用 “&amp;” 才管用。

(4)在浏览器地址栏输入:http://www.idtag.cn/rc/90000,如果正确返回则表示成功

 

3Urlrewrite.xml文件说明

(1) <urlrewrite></urlrewrite> :配置文件的根,有且仅有一个;

(2) <rule> </rule> url重写规则的配置,至少得有一个;

(3) <outbound-rule></outbound-rule>

此和<rule></rule>正好相反比如<rule></rule>将地址/test/status/“重写成/rewrite-status,而<outbound-rule></outbound-rule>正好相反, 是将地址/rewrite-status重写成/test/status/

相关的英文说明:The outbound-rule specifies that when response.encodeURL is called (if you are using JSTL c:url) the url /rewrite-status will be rewritten to /test/status/.

The above rule and this outbound-rule means that end users should never see the url /rewrite-status only /test/status/ both in thier location bar and in hyperlinks in your pages.

(3) <name></name> : 规则名称,可选属性;

(4) <condition></condition>(1)

可对时间,方法,来源,端口,类型等进行设置,

<condition name="user-agent" operator="notequal">Mozilla/[1-4]</condition> 客户端游览器不是Mozilla14版本以下可以访问.

<condition type="user-in-role" operator="notequal">bigboss</condition> bigboss不能访问.

<condition name="host" operator="notequal">www.baidu.com</condition> 主机是www.baidu.com不能访问

<condition type="method" next="or">PROPFIND</condition> 下个rulePROPFIND可以访问

<condition type="method">PUT</condition> put类型

(3) <note></note> : 可选属性,相当于备注;

(2) <from></from> :自己定义的访问地址;

(3) <to type=”forward|redirect”></to> :实际访问地址。forward是默认跳转方式,此种方式下地址栏中的url不会发生变化,redirect方式地址栏url会发生变化;

 

 

参考文档:

(1)     http://blog.csdn.net/skytalemcc/archive/2010/01/19/5214564.aspx

(2)     urlrewrite官方资料