urlRewrite的用法以及安装步骤

来源:互联网 发布:淘宝产品拍照收费 编辑:程序博客网 时间:2024/06/13 10:11

urlRewriter是利用过滤器实现URL转换的,适用于任何Web应用服务器(如Resin,Orion,Tomcat等)。其典型应用就把动态URL静态化,便于搜索引擎爬虫抓取你的动态网页。

使用步骤:

1、首先要在网上下载 urlRewriter.jar(建议最新版本 官网下载地址:tuckey.org/urlrewrite/) 。
2、配置web.xml,其实就是配置一个Filter:

这个包使用正则表达式仿照了apache rewrite的做法。而实现原理也是很明晰的:filter,forward,redirect机制组合

在web.xml配置一个UrlRewriteFilter,拦截所有进来的请求,对服务要求的请求进行rewrite。

<filter>
      <filter-name>UrlRewriteFilter</filter-name>
      <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
      <!-- (这个可以不写,是配置UrlRewriter日志的配置,级别定成WARN) -->
      <init-param>
            <param-name>logLevel</param-name>
            <param-value>WARN</param-value>
     </init-param>
     
    </filter>
    <filter-mapping>
       <filter-name>UrlRewriteFilter</filter-name>
       <url-pattern>*.html</url-pattern>
    </filter-mapping>

 

3、在WEB-INF 目录下新建一个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>/Searchfield/search.html</from>
        <to>/pages/Searchfield/search.htm</to>
    </rule>
   
    <!-- 带有两个参数 -->
    <rule>
        <from>/Searchfield/([_0-9]+)/([_0-9]+).html</from>
        <to>/pages/Searchfield/search.htm?x_groupsid=$1&amp;keys=$2</to>
    </rule>
    <!-- 用户登录 测试urlRewrite -->
 <rule>
        <from>/Department/([_0-9]+).html</from>
        <to>/pages/Department/userlogin.do?deptid=$1&amp;pwd=gpb</to>
    </rule>
</urlrewrite>

 

其中‘$1’ 代表第一个参数  ‘$2’ 代表第二个参数

 

配置通用的rule

<rule>  

     <note>  

     - 这是一个通用请求url rewrite  

      - 将请求forword url加上“.do”的处理器上。  

      - 例:  

      -    请求 http://{domain}/user/login     将被forward到 http://{domain}/user/login.do  

      -    请求 http://{domain}/user/login/    将被forward到 http://{domain}/user/login.do  

      -    请求 http://{domain}/user/logout/   将被forward到 http://{domain}/user/logout.do  

    </note>  

   <from>^/([_a-zA-Z]+[_0-9a-zA-Z-/]*[_0-9a-zA-Z]+)/?$</from>  

   <to type="forward">/$1.do</to>  

  </rule>