UrlRewriteFilter 4.0.3过滤器参数

UrlRewriteFilter 4.0.3

手册

社区支持在可用 UrlRewrite StackOverflow上

使用的例子 和一个 样本 ant任务 报告。 如果你有什么建议/本手册请的例子 集团

安装

  1. 添加以下Maven依赖或添加 urlrewritefilter - 4.0.3 . jar 直接到你的 web - inf / lib 目录中。
    <dependency>
        <groupId>org.tuckey</groupId>
        <artifactId>urlrewritefilter</artifactId>
        <version>
           
           4.0.3
           
           </version>
    </dependency>
  2. 添加以下你的web - inf /。 xml(添加顶部附近你的上空 servlet映射(如果你有)):(见 过滤器 参数 更多的选项)
    <filter>
        <filter-name>UrlRewriteFilter</filter-name>
        <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>UrlRewriteFilter</filter-name>
        <url-pattern>/*</url-pattern>
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>FORWARD</dispatcher>
    </filter-mapping>
  3. 添加 urlrewrite.xml 到你的web - inf目录中。 (src / main / webapp / web - inf / Maven用户)
  4. 重新启动上下文。

你可以访问 http://127.0.0.1:8080 rewrite-status (或其他本地应用和上下文的地址) 看到输出(注意:这个页面才可以从localhost)。

滤波器参数

有一些先进的过滤参数启用配置文件重新加载等有不言而喻的。

<filter>
    <filter-name>UrlRewriteFilter</filter-name>
    <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>

    <!-- set the amount of seconds the conf file will be checked for reload
    can be a valid integer (0 denotes check every time,
    -1 denotes no reload check, default -1) -->
    <init-param>
        <param-name>confReloadCheckInterval</param-name>
        <param-value>60</param-value>
    </init-param>

    <!-- if you need to the conf file path can be changed
    it is specified as a path relative to the root of your context
    (default /WEB-INF/urlrewrite.xml) -->
    <init-param>
        <param-name>confPath</param-name>
        <param-value>/WEB-INF/urlrewrite.xml</param-value>
    </init-param>

    <!-- sets up log level (will be logged to context log)
    can be: slf4j, TRACE, DEBUG, INFO (default), WARN, ERROR, FATAL,
    sysout:{level} (ie, sysout:DEBUG)
    if you are having trouble using normal levels use sysout:DEBUG
    (default WARN) -->
    <init-param>
        <param-name>logLevel</param-name>
        <param-value>DEBUG</param-value>
    </init-param>

    <!-- you can change status path so that it does not
    conflict with your installed apps (note, defaults
    to /rewrite-status) note, must start with / -->
    <init-param>
        <param-name>statusPath</param-name>
        <param-value>/status</param-value>
    </init-param>

    <!-- you can disable status page if desired
    can be: true, false (default true) -->
    <init-param>
        <param-name>statusEnabled</param-name>
        <param-value>true</param-value>
    </init-param>

    <!-- you may want to allow more hosts to look at the status page
    statusEnabledOnHosts is a comma delimited list of hosts, * can
    be used as a wildcard (defaults to "localhost, local, 127.0.0.1") -->
    <init-param>
        <param-name>statusEnabledOnHosts</param-name>
        <param-value>localhost, dev.*.myco.com, *.uat.mycom.com</param-value>
    </init-param>

    <!-- you may want to allow more hosts to look at the status page
    statusEnabledOnHosts is a comma delimited list of hosts, * can
    be used as a wildcard (defaults to "localhost, local, 127.0.0.1") -->
    <init-param>
        <param-name>statusEnabledOnHosts</param-name>
        <param-value>localhost, dev.*.myco.com, *.uat.mycom.com</param-value>
    </init-param>

    <!-- defaults to false. use mod_rewrite style configuration file (if this is true and confPath
    is not specified confPath will be set to /WEB-INF/.htaccess) -->
    <init-param>
        <param-name>modRewriteConf</param-name>
        <param-value>false</param-value>
    </init-param>

    <!-- load mod_rewrite style configuration from this parameter's value.
            note, Setting this parameter will mean that all other conf parameters are ignored.
        <init-param>
            <param-name>modRewriteConfText</param-name>
            <param-value>
                RewriteRule ^/~([^/]+)/?(.*) /u/$1/$2 [R]
                RewriteRule ^/([uge])/([^/]+)$ /$1/$2/ [R]
            </param-value>
        </init-param>
    -->

    <!-- defaults to false. allow conf file to be set by calling /rewrite-status/?conf=/WEB-INF/urlrewrite2.xml
            designed to be used for testing only
        <init-param>
            <param-name>allowConfSwapViaHttp</param-name>
            <param-value>false</param-value>
        </init-param>
    -->

</filter>

<filter-mapping>
    <filter-name>UrlRewriteFilter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
</filter-mapping>

注意,设置 logLevel slf4j 将导致内置的日志吗 调用 slf4j 如果是日志框架, 很明显你需要的jar slf4j在您的类路径中。

配置文件web - inf / urlrewrite.xml

< urlrewrite >   <规定>   < outbound-rule >   <类规则>
<名称>   <注意>   <条件>   从> <   <,>   <设置>   <运行>  
返回引用   变量   功能  

配置是通过一个简单的XML文件,在你的生活 - inf 文件夹中。 它应该叫 urlrewrite.xml。 它可能是有用的阅读 UrlRewriteFilter DTD (文档类型定义) 。 也请确保你看看 例子 。 一个简单的 配置文件的样子:

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

<!DOCTYPE urlrewrite
    PUBLIC "-//tuckey.org//DTD UrlRewrite 4.0//EN"
    "http://www.tuckey.org/res/dtds/urlrewrite4.0.dtd">

<urlrewrite>

    <rule>
       <from>^/some/olddir/(.*)$</from>
       <to type="redirect">/very/newdir/$1</to>
    </rule>

    <rule match-type="wildcard">
       <from>/blog/archive/**</from>
       <to type="redirect">/roller/history/$1</to>
    </rule>

</urlrewrite>

urlrewrite。 xml文件必须有一个根元素称为“urlrewrite”和必须包含 至少有一个元素“规则”。

一个“规则”必须包含一个“从”和“来”,并且可以有零个或多个“条件”元素和零个或多个和/或 “套”元素。

当一个“规则”对传入请求处理,必须满足所有的“条件”元素,然后 “从”将被应用到生成的URL请求URL和最终应用 “,”“从”模式。 只要规则匹配的“设置”将会运行。

当执行一个规则过滤器(非常简单)将遍历每个做的所有规则和推出这样的伪代码:

Pattern.compile(<from> element);
pattern.matcher(request url);
matcher.replaceAll(<to> element);
if ( <condition> elements match && matcher.find() ) {
    handle <set> elements (if any)
    execute <run> elements (if any)
    perform <to> element (if any)
}

< urlrewrite >元素

顶级元素。

属性 可能值 解释
default-match-type
(可选)
正则表达式 (默认) 所有规则和他们的条件将被处理(除非使用Java正则表达式引擎 平衡式 指定一个规则)。
通配符 所有规则和他们的条件将加工使用 通配符表达式 引擎 (除非 平衡式 指定一个规则)。
解码时
(可选)
头,utf8 (默认) 当URL解码request.getCharacterEncoding()将被使用,如果是空将使用utf - 8。
不解码。 (注意,这意味着零如文字字符串解码时=“零”)
只使用request.getCharacterEncoding()解码。
(编码) 只使用一个特定的字符编码如iso - 8859 - 1。 看到 Java字符集对象 所有的字符编码。
头,(编码) 当URL解码request.getCharacterEncoding()将被使用,如果是空的一个特定的字符 编码如iso - 8859 - 1。 看到 Java字符集对象 所有的字符编码。
use-query-string
(可选)
(默认) 查询字符串将 被附加到url元素与“从”。
真正的 将附加到url查询字符串的匹配对“从”元素。
使用环境
(可选)
(默认) 上下文路径将 被添加到“从”元素匹配的url。
真正的 上下文的url路径将被添加到“从”元素匹配。

<规定>元素

零个或更多。 一个规则的基础。

属性 可能值 解释
启用
(可选)
真正的 (默认) 启用该规则。
禁用此规则。
平衡式
(可选)
正则表达式 (默认) 这条规则的条件将使用Java正则表达式引擎处理。
通配符 这条规则将被处理使用的条件 通配符表达式引擎

下面的示例请求 /世界/美国/纽约 将透明转发吗 / world.jsp

<rule match-type="regex">
   <from>^/world/([a-z]+)/([a-z]+)$</from>
   <to>/world.jsp</to>
</rule>
<rule match-type="wildcard">
   <from>/world/*/*</from>
   <to>/world.jsp</to>
</rule>

< outbound-rule >元素

零个或更多。 这非常类似于一个正常的规则,但用于重写url response.encodeURL()

属性 可能值 解释
启用
(可选)
真正的 (默认) 启用该规则。
禁用此规则。
encodefirst
(可选)
(默认) 运行encodeURL() 运行此出站规则。
真正的 运行encodeURL() 之前 运行此出站规则。

可能包含“运行”,“从”,“对”和“设置”元素(s)。 例子:

<outbound-rule>
    <from>^/world.jsp?country=([a-z]+)&amp;city=([a-z]+)$</from>
    <to>/world/$1/$2</to>
</outbound-rule>

使用上面的示例JSP的代码
< a href = " < % = response.encodeURL(“/ world.jsp ?国家= usa&城市=纽约”) 纽约% > " > < / >
将输出
< a href = " /世界/美国/纽约" >纽约< / >

或JSTL
< a href = " < c:url value = " / world.jsp ?国家= $ { }的国家和城市= $ { }城” 纽约/ > " > < / >
将输出
< a href = " /世界/美国/纽约" >纽约< / >

请注意,如果您正在使用JSTL(即< c:url)这将工作。

<名称>元素

一个可选元素用于记录规则的名称。 这可以使用规则,outbound-rule。 看到 ant任务

<rule>
    <name>World Rule</name>
    <from>^/world/([a-z]+)/([a-z]+)$</from>
    <to>/world.jsp?country=$1&amp;amp;city=$2</to>
</rule>

<注意>元素

一个简单的可选元素用于文档的规则。 这可以使用规则,outbound-rule。 看到 ant任务

<rule>
    <name>World Rule</name>
    <note>
        Cleanly redirect world requests to JSP,
        a country and city must be specified.
    </note>
    <from>^/world/([a-z]+)/([a-z]+)$</from>
    <to>/world.jsp</to>
</rule>

<条件>元素

一个元素,让你选择条件规则。 注意,所有条件必须得到满足的规则运行 (除非“下一个”设置为”或“举例)。

值可以是任何 正则表达式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值