Urlrewrite Java 伪静态 urlrewrite.xml 配置参数描述

JSON 2016-08-22 17:04:50 11171

Urlrewrite  译意为:URL 地址重写。

Java  Urlrewrite  我用的是3.2版本的,接下来我会一系列的为 Urlrewrite  讲解各种用法。

一、Urlrewrite 的作用

  1. URL 重写,达到效果美观,也可以说安全。
  2. SEO  效果。
  3. 伪静态,为什么说是伪静态,因为它处理后不是真的静态,而是通过 Urlrewrite  迷惑请求方认为是静态的。
  4. 过滤一些规则。

二、介绍 urlrewrite.xml 可以用到的配置

1.DTD。

<?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">

2.<urlrewrite />配置项介绍。

2.1.default-match-type(可选):

2.1.1.regex,默认.所有未指定match-type属性的rule都使用java正则表达式进行匹配。

2.1.2.wildcard:所有未指定match-type属性的rule都使用通配符匹配引擎匹配

2.2.decode-using(可选):

2.2.1.header, utf8: 默认.使用request.getCharacterEncoding()得到的编码对URL解码,如果是空,使用utf8.

2.2.2.null:不进行解码.设置为: decode-using=”null”

2.2.3.header:仅仅使用request.getCharacterEncoding()解码

2.2.4.[encoding]:仅仅使用一个指定的字符编码比如ISO-8859-1.

2.2.5.header, [encoding]: 对一个URL解码时使用request.getCharacterEncoding(),如果得到的值为空,则使用encoding指定的编码.

2.3.use-query-string(可选):

2.3.1.false:默认.在from进行匹配的时候,查询字符串不会参加

2.3.2.true:查询字符串参与from的匹配

2.4.use-context(可选):

2.4.1.false:默认. from元素匹配时, application的contex路径将不会增加到url中

2.4.2.true: application的contex路径参与from元素的匹配

3.<rule />: 0个或多个

3.1.enabled(可选):

3.1.1.true:默认.允许这个规则

3.1.2.false:废弃这个规则

3.2.match-type(可选):

3.2.1.regex:默认.使用java正则匹配

3.2.2.wildcard:使用通配符表达式引擎

4.<outbound-ruld />: 0个或多个.和普通的rule非常相似,但是这里是在response.encodeURL()方法调用时进行重写的.

4.1.enabled(可选):

4.1.1.true:默认.允许规则

4.1.2.false:废弃规则

4.2.encodefirst(可选):

4.2.1.fasle:默认,在运行了encodeURL()方法之后运用这个重写规则

4.2.2.true:在encodeURL()之前运用这个重写规则

5.<name />: 一个用于记录规则名称的可选元素,可以在<rule />和<outbound-rule />上使用

6.<note />: 用于记录规则描述的一个简单可选元素,可以用在<rule />和<outbound-rule />上.

7.<condition />: 针对规则的选择条件.注意,在规则运用的时候必须满足所有的条件.

7.1.type(可选):

7.1.1.header:默认.如果设置,头名称必须通过<condition />的name属性指定

7.1.2.method:请求方法. GET, POST, HEAD等

7.1.3.port: application运行的端口

7.1.4.time:服务器当前时间(使用Unix时间戳),这个通常被用于确保内容仅在设置的时间存活

7.1.5.year:服务器的当前年

7.1.6.month:服务器的当前月份

7.1.7.dayofmonth:当天是一月的第几天,每月第一天是1

7.1.8.dayofweek:当天是一周的第几天,星期天是7

7.1.9.ampm:上午或下午

7.1.10.hourofday:一天的第多少小时(24小时制)

7.1.11.minute:当前服务器时间的分

7.1.12.second:当前服务器时间的秒

7.1.13.millisecond:当前服务器时间的毫秒

7.1.14.attribute:检查request的属性(getAttribute)值,要检查的属性名称通过的name指定

7.1.15.auth-type:检查request属性的值. request.getAuthType

7.1.16.character-encoding:接收到请求的编码

7.1.17.content-length:请求的长度(对于拒绝响应大请求很有用)

7.1.18.content-type:请求类型

7.1.19.context-path:请求的contex路径

7.1.20.cookie:检查cookie值, cookie的名称通过的name属性指定

7.1.21.parameter:检查请求参数,参数名称通过的name属性指定

7.1.22.path-info:相当于request.getPathInfo()

7.1.23.path-translated:相当于request.getTranslated()

7.1.24.protocol:用于过滤协议

7.1.25.query-string:得到url后面的参数字符串

7.1.26.remote-addr: IP地址过滤

7.1.27.remote-host:远程主机过滤(注意,仅仅在应用服务器配置了查看(远程)主机名时才可用)

7.1.28.remote-user:当前登录用户,如果用户被授权可用

7.1.29.requested-session-id:当前session的id

7.1.30.request-uri:请求URL的从协议名到查询字符串部分

7.1.31.request-url:重构后的URL,返回的URL包含协议,服务器名称,端口,路径,但不包含查询字符串

7.1.32.session-attribute:检查session中的属性(getAttribute),属性名称通过的name属性设置.

7.1.33.session-isnew:检查session是不是新的

7.1.34.server-name:请求发送到的服务器的主机名(从host这个头中得到的不是机器名)

7.1.35.scheme:请求的scheme

7.1.36.user-in-role:注意,这里的值不能是正则表达式

7.2.name:配合一些特殊type使用的,可以是任何值

7.3.next:

7.3.1.and:默认.下一个和这一个条件都必须匹配

7.3.2.or:下一个或这一个条件匹配

7.4.operator:

7.4.1.equal:默认.指定正则和真实值匹配

7.4.2.notequal:真实值和正则不匹配

7.4.3.greater:大于,仅用于数值

7.4.4.less:小于

7.4.5.greaterorequal:大于等于

7.4.6.lessorequal:小于等于

8.通常在中都必须指定一个,值可以是正则表达式(Perl5方式的正则),注意: from指定的url是和contex相关的

8.1.casesensitive:

8.1.1.false:默认.大小写不敏感

8.1.2.true:大小写敏感

9.可以是一个perl5样式的正则替换表达式

9.1.type:

9.1.1.forward:默认.请求匹配这个的所有, 并且URL使用内部跳转到”to”指定的地址(注意,这里forward到的URL必须和UrlRewriteFilter位于同一个容器中)

9.1.2.passthrough:和forward相同

9.1.3.redirect:请求匹配所有和这个, 通知客户端跳转到指定地址

9.1.4.permanent-redirect:相当于做了以下事情

response.setStatus(

HttpServletResponse.SC_MOVED_PERMANENTLY

);
response.setHeader(“Location”, [指定的值]);

9.1.5.temporary-redirect:相当于做了以下事情

response.setStatus(
HttpServletResponse. SC_MOVED_TEMPORARILY

);
response.setHeader(“Location”, [指定的值]);

9.1.6.pre-include

9.1.7.post-include

9.1.8.proxy:请求URL将会以全路径被代理,使用此特性需要引入commons-http和commons-codec包

9.2.last:

9.2.1.false:默认.其余将会处理如果这个匹配

9.2.2.true:如果匹配这个规则将不会处理

9.3.encode:

9.3.1.false: 下是默认值.在rewrite之前,用response.encodeURL([to的值])编码URL

9.3.2.true: 下默认值.不会编码URL

9.4.context:

如果应用服务器配置了允许”穿透context”通信,那么这个属性可以被用于forward(并且仅仅能用于forward)请求到另外一个serlvet context…..也就是跨应用forward

在Tomcat上, server.xml或context.xml中配置crossContext=”true”,例如:允许两个应用”app”和”forum”之间通信,那么可以如下配置:

10.的其他方面

10.1.可以是null,意义为:如果匹配请求不再继续,相当于没有调用chain.doFilter

10.2.使用$N获取中配置的子组, N必须是1至10之间的数

10.3.任何中可以使用的type中的值都可以在中使用,比如/%{parameter:page}

10.4.函数调用: ${函数名:参数1:参数2} 可以在中使用

接下来会系列讲解 Urlrewrite  在实际中运用。

版权所属:SO JSON在线解析

原文地址:https://www.sojson.com/blog/96.html

转载时必须以链接形式注明原始出处及本声明。

本文主题:

如果本文对你有帮助,那么请你赞助我,让我更有激情的写下去,帮助更多的人。

关于作者
一个低调而闷骚的男人。
相关文章
Java web.xml 配置技巧—动态欢迎页地址
BlockingQueue 方法详细描述
Spring 静态注入讲解(MethodInvokingFactoryBean)
Spring 静态变量注入赋值,静态方法调用,静态语句块
Java有序读取配置文件,有序读取ini配置文件
Freemarker静态化加载模板的三种方式
Springboot + Mybatis +Maven 自动生成 Mapper.xml,Entity,Dao。 generator 配置
基于Centos7以上的JAVA相关配置(一)
Shiro教程(三)Shiro web.xml中Filter配置配置注意事项
Springboot + Freemarker 集成配置
最新文章
Java赋值运算符 13
XML内部实体和外部实体 180
Java面向对象编程概念 143
PHP回显语句 91
Linux—文件树 116
C语言while循环和do while循环 131
Python元组剖析 200
MySQL触发器教程 314
sql使用布尔运算符和关系运算符 258
C语言的变量和常量 296
最热文章
最新MyEclipse8.5注册码,有效期到2020年 (已经更新) 682077
苹果电脑Mac怎么恢复出厂系统?苹果系统怎么重装系统? 674719
免费天气API,全国天气 JSON API接口,可以获取五天的天气预报 602168
免费天气API,天气JSON API,不限次数获取十五天的天气预报 577303
Jackson 时间格式化,时间注解 @JsonFormat 用法、时差问题说明 552926
我为什么要选择RabbitMQ ,RabbitMQ简介,各种MQ选型对比 509367
Elasticsearch教程(四) elasticsearch head 插件安装和使用 480022
Jackson 美化输出JSON,优雅的输出JSON数据,格式化输出JSON数据... ... 264583
Java 信任所有SSL证书,HTTPS请求抛错,忽略证书请求完美解决 244254
Elasticsearch教程(一),全程直播(小白级别) 225569
支付扫码

所有赞助/开支都讲公开明细,用于网站维护:赞助名单查看

查看我的收藏

正在加载... ...