`
wzg489326
  • 浏览: 48044 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

urlrewrite 配置

    博客分类:
  • java
阅读更多

    在进行链接伪静态时用到了urlrewrite,一个开源的jar包,配置使用:

首先下载jar包导入,下载地址:http://code.google.com/p/urlrewritefilter/downloads/list ,
在web.xml 加入UrlRewriteFilter
<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>


  可选的初始化参数 :
  confReloadCheckInterval:间隔冲洗加载时间秒。调试时用这个。
  confPath :制定配置文件,不加默认(/WEB-INF/urlrewrite.xml)
  statusPath:查看urlrewrite配置的详细,默认/rewrite-status。若在  <url-pattern>/a/*</url-pattern> 则是:/a/rewrite-status
  statusEnabled: 若为false,则 statuspath无效,默认true
  statusEnabledOnHosts,allowConfSwapViaHttp,modRewriteConf,modRewriteConfText

  然后urlrewrite.xml 中配置,下面这个是jar包中自带的配置和说明:
 
  <?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">
<!--

    Configuration file for UrlRewriteFilter
    http://tuckey.org/urlrewrite/

-->
<urlrewrite>
  <rule>
            <from>/some/old/page.html</from>
            <to type="redirect">/very/new/page.html</to>
        </rule>
	

   <!-- Redirect a directory-->
        <rule>
            <from>/some/olddir/(.*)</from>
            <to type="redirect">/very/newdir/$1</to>
        </rule>

    <!-- Clean a url-->
        <rule>
	    <name>简化url</name>
	    <note>/products/1234 will be passed on to /products/index.jsp?product_id=1234 without the user noticing.</note>
            <from>/products/([0-9]+)</from>
            <to>/products/index.jsp?product_id=$1</to>
        </rule>
        <rule>
	    <note>will pass the request for /some/page.html on to /some/page-for-old-browsers.html only for older
    browsers whose user agent srtings match Mozilla/1, Mozilla/2, Mozilla/3 or Mozilla/4</note>

            <condition name="user-agent">Mozilla/[1-4]</condition>
            <from>/some/page.html</from>
            <to>/some/page-for-old-browsers.html</to>
        </rule>
   <!--   Centralised browser detection -->
        <rule>
            <condition name="user-agent">Mozilla/[1-4]</condition>
            <set type="request" name="browser">moz</set>
        </rule>
</urlrewrite>


其中rule 还可以这样
   <rule>
        <name>test Rule </name>
        <note>this is a  test normalRule.</note>
        <condition type="local-port">8080</condition>
        <condition type="dayofweek">1</condition>
        <condition type="ampm" operator="less">12</condition>
        <condition type="year" operator="greaterorequal">2010</condition>

        <run class="com.web.controller.test.Test" method="justRun" jsonhandler="true"/>
         <from>/some/olddir/(.*)</from>
         <to type="redirect">/very/newdir/$1</to>
    </rule>


condition 所支持的type类型,可以在:TypeConverter类中有:
 public String getType() {
        switch (type) {

            case TYPE_TIME:
                return "time";
            case TYPE_TIME_YEAR:
                return "year";
            case TYPE_TIME_MONTH:
                return "month";
            case TYPE_TIME_DAY_OF_MONTH:
                return "dayofmonth";
            case TYPE_TIME_DAY_OF_WEEK:
                return "dayofweek";

            case TYPE_TIME_AMPM:
                return "ampm";
            case TYPE_TIME_HOUR_OF_DAY:
                return "hourofday";
            case TYPE_TIME_MINUTE:
                return "minute";
            case TYPE_TIME_SECOND:
                return "second";
            case TYPE_TIME_MILLISECOND:
                return "millisecond";

            case TYPE_ATTRIBUTE:
                return "attribute";
            case TYPE_AUTH_TYPE:
                return "auth-type";
            case TYPE_CHARACTER_ENCODING:
                return "character-encoding";
            case TYPE_CONTENT_LENGTH:
                return "content-length";
            case TYPE_CONTENT_TYPE:
                return "content-type";

            case TYPE_CONTEXT_PATH:
                return "context-path";
            case TYPE_COOKIE:
                return "cookie";
            case TYPE_HEADER:
                return "header";
            case TYPE_LOCAL_PORT:
                return "local-port";
            case TYPE_METHOD:
                return "method";
            case TYPE_PARAMETER:
                return "parameter";

            case TYPE_PATH_INFO:
                return "path-info";
            case TYPE_PATH_TRANSLATED:
                return "path-translated";
            case TYPE_PROTOCOL:
                return "protocol";
            case TYPE_QUERY_STRING:
                return "query-string";
            case TYPE_REMOTE_ADDR:
                return "remote-addr";

            case TYPE_REMOTE_HOST:
                return "remote-host";
            case TYPE_REMOTE_USER:
                return "remote-user";
            case TYPE_REQUESTED_SESSION_ID:
                return "requested-session-id";
            case TYPE_REQUEST_URI:
                return "request-uri";
            case TYPE_REQUEST_URL:
                return "request-url";

            case TYPE_SESSION_ATTRIBUTE:
                return "session-attribute";
            case TYPE_SESSION_IS_NEW:
                return "session-isnew";
            case TYPE_SERVER_PORT:
                return "port";
            case TYPE_SERVER_NAME:
                return "server-name";
            case TYPE_SCHEME:
                return "scheme";

            case TYPE_USER_IN_ROLE:
                return "user-in-role";
            case TYPE_EXCEPTION:
                return "exception";
            default:
                return "";
        }
    }


<run/> 对应的method中的参数必须是一下几种。
{ServletRequest.class, ServletResponse.class},
{ServletRequest.class},
{ServletResponse.class},
{HttpServletRequest.class, HttpServletResponse.class},
{HttpServletRequest.class},
{HttpServletResponse.class}

在类Run中用到反射来验证方法是否存在,反射时默认的参数是以上几种。
在过滤是符合规则 会执行run中对应的方法然后在转向真正的url。

好了,ok。

分享到:
评论

相关推荐

    URLRewrite配置和使用

    URLRewrite配置和使用 URLRewrite是一种URL重写技术,它可以满足搜索引擎的要求,隐藏技术实现,提高网站的移植性,并满足美感的要求。下面将详细介绍URLRewrite的配置和使用。 1. 满足搜索引擎的要求 搜索引擎对...

    urlrewrite地址重写实例配置说明

    以上只是URLRewrite配置的一些基本示例,实际上它的规则配置非常灵活,可以满足各种复杂的URL处理需求。在实践中,可以根据实际项目需求编写更具体的规则,以达到理想的效果。 在提供的压缩包文件中,"urlrewrite...

    urlrewrite-maven-example.zip

    **URLRewrite配置** 在`urlrewrite.xml`中,规则通常由以下部分组成: 1. **Condition**:条件语句,如`&lt;when&gt;`标签,可以基于HTTP请求的各种属性(如请求方法、请求参数、请求URI等)进行匹配。 2. **Rule**:...

    UrlRewrite.rar

    三、UrlRewrite配置与使用 1. 安装与集成:首先,需要下载并安装UrlRewrite.dll文件到IIS服务器的扩展目录中,然后在IIS管理器中启用URL重写模块,并添加UrlRewrite的配置文件。 2. 规则编写:UrlRewrite的规则...

    URLRewrite配置和使用[借鉴].pdf

    在本文中,我们将深入探讨URLRewrite的配置和使用方法。 首先,为什么要使用URLRewrite?通常有三个主要原因: 1. **搜索引擎友好**:搜索引擎更倾向于抓取简洁、有意义的URL,URL重写可以使得动态参数化的URL变得...

    urlrewrite

    下面是一个简单的URLRewrite配置示例: ```xml ^/oldpath/(.*)$ &lt;to type="redirect"&gt;/newpath/$1 ``` 这个规则会将所有以`/oldpath/`开头的请求重定向到`/newpath/`下对应的部分。 总结 URLRewrite作为Java ...

    UrlRewrite实现伪静态

    4. **UrlRewrite配置**: - **添加依赖**:首先,需要在项目中引入UrlRewriteFilter的依赖,如果是Maven项目,可以在pom.xml中添加对应的dependency。 ```xml &lt;groupId&gt;org.tuckey &lt;artifactId&gt;...

    urlrewrite.dll

    4. **移植方便**:由于URL重写规则通常独立于应用程序代码,因此在更换服务器或Web框架时,只要保持UrlRewrite配置不变,即可轻松迁移。 **标签解析:** “urlrewrite”标签表明这个话题主要涉及URL重写技术,这是...

    Apache URL Rewrite功能配置

    #### 四、Apache URL Rewrite配置步骤 1. **切换至Apache配置目录**: - 进入`/etc/httpd/conf`目录。 2. **启用URL Rewrite模块**: - 编辑`httpd.conf`文件。 - 找到`#LoadModule rewrite_module modules/mod...

    urlrewrite2伪静态与使用文档(IIS)

    这个文档很可能包含了urlrewrite2的详细配置指南、规则语法解析、常见问题解答以及如何在IIS与PHPWAMP环境下进行配置的实例。建议仔细阅读该文档,以便深入理解和熟练运用urlrewrite2。 总之,urlrewrite2在IIS环境...

    urlrewrite 支持自定义多配置文件

    confPath 默认 /WEB-INF/urlrewrite.xml 只支持一个配置文件,为了更好的阅读和维护,修改了源码: 1.如果想用原生的urlRewriteFilter confPath 请放完整地址(eg:WEB-INF/urlrewrite.xml); 2.如果想读多个配置文件,...

    urlrewrite 支持自定义多配置文件(*通配符)

    urlrewrite 只支持单个配置文件,默认的配置文件为:/WEB-INF/urlrewrite.xml 现在对urlrewrite-3.2的源码进行了修改,使它能够支持多文件和通配符的形式加载自定义配置文件,即可以进行如下的配置: &lt;param-name&gt;...

    urlrewrite简单例子

    以下是一个简单的urlrewrite配置示例: ```apacheconf &lt;IfModule mod_rewrite.c&gt; RewriteEngine On RewriteBase / # 将动态URL重写为静态格式 RewriteRule ^article/(\d+).html$ article.php?id=$1 [L] ``` ...

    使用urlrewrite实现视频文件的下载

    这是URLRewrite配置的核心文件,其中包含了各种规则定义。在这个案例中,`urlrewrite.xml`可能包含了一些特定的规则,用于将用户请求的视频URL转换为可以直接触发视频文件下载的URL。配置文件通常会使用XML语法,...

    urlrewrite包和配置文件

    在web.xml中配置UrlRewriteFilter,意味着我们需要声明一个过滤器条目,指定它的类名(`org.tuckey.web.filters.urlrewrite.UrlRewriteFilter`)以及配置文件的位置(通常是在&lt;context-param&gt;`中指定的`urlrewrite....

    urlrewrite3.04的demo

    **四、urlrewrite.xml配置示例** `urlrewrite.xml`文件通常包含一系列规则,每个规则由`&lt;rule&gt;`标签定义。下面是一些基本规则的示例: 1. **简单重写**: ```xml ^/old-page.html$ &lt;to&gt;/new-page.jsp ``` 这条...

    java urlrewrite jar及简单配置

    3. **创建配置文件**:URLRewriteFilter的规则通常定义在`WEB-INF/urlrewrite.xml`文件中。例如,以下规则会将所有以"/article/"开头的请求重定向到对应的Servlet处理: ```xml &lt;urlrewrite&gt; &lt;from&gt;/article/(....

    iis urlrewrite文件

    虽然IIS URL Rewrite的配置通常是在IIS管理器中进行,但如果你在Apache环境中工作,会使用httpd.conf配置文件。在这个文件中,你可以使用类似Apache的RewriteEngine、RewriteRule和RewriteCond指令来实现URL重写。...

    UrlRewrite域名重写

    UrlRewrite的配置主要在Web.config文件中完成,其中包含了若干个重写规则。例如,一个简单的规则可能将形如`/product.aspx?id=123`的URL重写为`/product/123`。这样的规则可以使用正则表达式定义源URL模式,并指定...

    URLrewrite-实例

    集成`URLrewrite`到Java Web应用中,通常需要在web.xml中配置Filter,指定`urlrewrite.xml`的位置,然后在Servlet容器启动时加载配置: ```xml &lt;filter-name&gt;UrlRewriteFilter &lt;filter-class&gt;org.tuckey.web....

Global site tag (gtag.js) - Google Analytics