在进行链接伪静态时用到了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是一种URL重写技术,它可以满足搜索引擎的要求,隐藏技术实现,提高网站的移植性,并满足美感的要求。下面将详细介绍URLRewrite的配置和使用。 1. 满足搜索引擎的要求 搜索引擎对...
以上只是URLRewrite配置的一些基本示例,实际上它的规则配置非常灵活,可以满足各种复杂的URL处理需求。在实践中,可以根据实际项目需求编写更具体的规则,以达到理想的效果。 在提供的压缩包文件中,"urlrewrite...
**URLRewrite配置** 在`urlrewrite.xml`中,规则通常由以下部分组成: 1. **Condition**:条件语句,如`<when>`标签,可以基于HTTP请求的各种属性(如请求方法、请求参数、请求URI等)进行匹配。 2. **Rule**:...
三、UrlRewrite配置与使用 1. 安装与集成:首先,需要下载并安装UrlRewrite.dll文件到IIS服务器的扩展目录中,然后在IIS管理器中启用URL重写模块,并添加UrlRewrite的配置文件。 2. 规则编写:UrlRewrite的规则...
在本文中,我们将深入探讨URLRewrite的配置和使用方法。 首先,为什么要使用URLRewrite?通常有三个主要原因: 1. **搜索引擎友好**:搜索引擎更倾向于抓取简洁、有意义的URL,URL重写可以使得动态参数化的URL变得...
下面是一个简单的URLRewrite配置示例: ```xml ^/oldpath/(.*)$ <to type="redirect">/newpath/$1 ``` 这个规则会将所有以`/oldpath/`开头的请求重定向到`/newpath/`下对应的部分。 总结 URLRewrite作为Java ...
4. **UrlRewrite配置**: - **添加依赖**:首先,需要在项目中引入UrlRewriteFilter的依赖,如果是Maven项目,可以在pom.xml中添加对应的dependency。 ```xml <groupId>org.tuckey <artifactId>...
4. **移植方便**:由于URL重写规则通常独立于应用程序代码,因此在更换服务器或Web框架时,只要保持UrlRewrite配置不变,即可轻松迁移。 **标签解析:** “urlrewrite”标签表明这个话题主要涉及URL重写技术,这是...
#### 四、Apache URL Rewrite配置步骤 1. **切换至Apache配置目录**: - 进入`/etc/httpd/conf`目录。 2. **启用URL Rewrite模块**: - 编辑`httpd.conf`文件。 - 找到`#LoadModule rewrite_module modules/mod...
这个文档很可能包含了urlrewrite2的详细配置指南、规则语法解析、常见问题解答以及如何在IIS与PHPWAMP环境下进行配置的实例。建议仔细阅读该文档,以便深入理解和熟练运用urlrewrite2。 总之,urlrewrite2在IIS环境...
confPath 默认 /WEB-INF/urlrewrite.xml 只支持一个配置文件,为了更好的阅读和维护,修改了源码: 1.如果想用原生的urlRewriteFilter confPath 请放完整地址(eg:WEB-INF/urlrewrite.xml); 2.如果想读多个配置文件,...
urlrewrite 只支持单个配置文件,默认的配置文件为:/WEB-INF/urlrewrite.xml 现在对urlrewrite-3.2的源码进行了修改,使它能够支持多文件和通配符的形式加载自定义配置文件,即可以进行如下的配置: <param-name>...
以下是一个简单的urlrewrite配置示例: ```apacheconf <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / # 将动态URL重写为静态格式 RewriteRule ^article/(\d+).html$ article.php?id=$1 [L] ``` ...
这是URLRewrite配置的核心文件,其中包含了各种规则定义。在这个案例中,`urlrewrite.xml`可能包含了一些特定的规则,用于将用户请求的视频URL转换为可以直接触发视频文件下载的URL。配置文件通常会使用XML语法,...
在web.xml中配置UrlRewriteFilter,意味着我们需要声明一个过滤器条目,指定它的类名(`org.tuckey.web.filters.urlrewrite.UrlRewriteFilter`)以及配置文件的位置(通常是在<context-param>`中指定的`urlrewrite....
**四、urlrewrite.xml配置示例** `urlrewrite.xml`文件通常包含一系列规则,每个规则由`<rule>`标签定义。下面是一些基本规则的示例: 1. **简单重写**: ```xml ^/old-page.html$ <to>/new-page.jsp ``` 这条...
3. **创建配置文件**:URLRewriteFilter的规则通常定义在`WEB-INF/urlrewrite.xml`文件中。例如,以下规则会将所有以"/article/"开头的请求重定向到对应的Servlet处理: ```xml <urlrewrite> <from>/article/(....
虽然IIS URL Rewrite的配置通常是在IIS管理器中进行,但如果你在Apache环境中工作,会使用httpd.conf配置文件。在这个文件中,你可以使用类似Apache的RewriteEngine、RewriteRule和RewriteCond指令来实现URL重写。...
UrlRewrite的配置主要在Web.config文件中完成,其中包含了若干个重写规则。例如,一个简单的规则可能将形如`/product.aspx?id=123`的URL重写为`/product/123`。这样的规则可以使用正则表达式定义源URL模式,并指定...
集成`URLrewrite`到Java Web应用中,通常需要在web.xml中配置Filter,指定`urlrewrite.xml`的位置,然后在Servlet容器启动时加载配置: ```xml <filter-name>UrlRewriteFilter <filter-class>org.tuckey.web....