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

soゝso 2016-08-22 17:04:50 1816
分享到:

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  在实际中运用。

关于作者
目前就职于国内某电商平台公司打杂。。
相关文章
Java web.xml 配置技巧—动态欢迎页地址
Spring 静态注入讲解(MethodInvokingFactoryBean)
BlockingQueue 方法详细描述
Shiro教程(三)Shiro web.xml中Filter配置配置注意事项
Spring 静态变量注入赋值,静态方法调用,静态语句块
Freemarker静态化加载模板的三种方式
Java有序读取配置文件,有序读取ini配置文件
基于Centos7以上的JAVA相关配置(一)
Springboot + Mybatis +Maven 自动生成 Mapper.xml,Entity,Dao。 generator 配置
Shiro教程(六)Shiro整体的配置文件
最新文章
免费天气API,全国天气 JSON API接口,可以获取五天的天气预报 39153
SOJSON 使用又拍云 CDN 整体架构,解决百度 SEO 方案 33
又拍云(Upyun)刷新CDN,云存储缓存 —JavaAPI 20
JS解密,JavaScript 解密,任何JS加密都能100%解密,以及JS 加密讲解 83
阿里云DNS 解析讲解,SEO配置搜索引擎线路解析 45
百度秒收录教程,怎么做到百度秒收入你的页面,SEO 教程 101
CDN 请求返回 connection reset by peer,被拦截请求解决方案 37
Google AdSense 申请技巧,谷歌广告申请通不过教程 69
Mac 安装 JMeter,JMeter 下载,JMeter Http 压力测试【图解】 51
支付宝吱口令自动复制脚本,自动复制 JavaScript 代码介绍 916
最热文章
免费天气API,全国天气 JSON API接口,可以获取五天的天气预报 39097
Elasticsearch教程(四) elasticsearch head 插件安装和使用 109124
Elasticsearch教程(六) elasticsearch Client创建 73308
Elasticsearch教程(八) elasticsearch delete 删除数据(Java) 70761
Elasticsearch教程(二),IK分词器安装 67505
Elasticsearch教程(三),IK分词器安装 (极速版) 54092
Elasticsearch教程(五) elasticsearch Mapping的创建 51628
Elasticsearch教程(一),全程直播(小白级别) 51390
Elasticsearch教程(七) elasticsearch Insert 插入数据(Java) 47779
Elasticsearch权威指南-中文.pdf,Elasticsearch 中文文档下载 40948

骚码加入我们 / 千人QQ群:259217951

入群需要5元,如果没有QQ钱包,可以先Alipay、微信,赞助然后加群主拉进。

二维码生成 来自 >> 二维码生成器

支付扫码

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

正在加载... ...