伪静态—urlRewrite
来源:互联网 发布:网络教育学籍注册冲突 编辑:程序博客网 时间:2024/05/21 19:50
urlRewrite 这个东西随便一百度就有一堆,但是好多人都没有把它说很清楚
我作为一个初级程序员,看源码是不可能看懂的,英文文档的阅读能力有限
所以,我只能在实践中寻找答案
先说一下urlRewrite的简单配置
pom
<dependency> <groupId>org.tuckey</groupId> <artifactId>urlrewritefilter</artifactId> <version>4.0.4</version></dependency>
web.xml
<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>DEBUG</param-value> </init-param></filter><filter-mapping> <filter-name>UrlRewriteFilter</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher></filter-mapping>如果你是maven项目,web.xml引用web-app_2_3.dtd规范时,是不支持<dispatcher></dispatcher>标签的,2.5版本以上才能支持。
urlrewrite.xml
<?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 decode-using="UTF-8"><rule> <from>^/rest/test/id-([0-9]+)\.html$</from> <to>/rest/test/id/$1</to></rule><rule> <from>^/rest/test/name-([a-z0-9A-Z]+)\.html$</from> <to>/rest/test/name/$1</to></rule><rule> <from>^/rest/test/age-([a-z0-9A-Z]+)\.html$</from> <to>/rest/test/age/$1</to></rule><rule> <from>^/rest/test/id-([0-9]+)/name-([a-z0-9A-Z]+)/index\.html$</from> <to>/rest/test/id/$1/name/$2</to></rule></urlrewrite>这个文件目前只能放在WEB-INF目录下。虽然UrlRewriteFilter有confPath这个参数,我把urlrewrite.xml放在根目录下,然后设置confPath参数,很遗憾不起作用。
这样就能用了,但是有些地方还是要注意一下
举个栗子
就下面这个rule来说<rule> <from>^/rest/test/id-([0-9]+)/name-([a-z0-9A-Z]+)/index.html$</from> <to>/rest/test/id/$1/name/$2</to></rule>
from 和 to
from标签里的内容一个正则表达式,这里不普及正则的知识的。to标签对应转换后的真实URI,
1、 2分别表示from标签第一、二个括号中的内容。
uri替换
比如这个请求:http://127.0.0.1:8080/rest/test/id-123/name-wsc/index.html,会被UrlRewriteFilter过滤器拦截,并进行rule匹配,发现满足最后一个rule(^/rest/test/id-([0-9]+)/name-([a-z0-9A-Z]+)/index.html$),随后修改URI为:/rest/test/id/123/name/wsc,我写了两个Filter分别放在UrlRewriteFilter的前后,我发现如果URI被UrlRewriteFilter有效匹配,UrlRewriteFilter后面的filter将不会执行,这点很有意思。
正则注意事项
http://127.0.0.1:8080/rest/test/id-123/name-wsc/index.html,把index.html换成index1html也是成立的,别忘了“.”在正则表达式中的意义。所以,我推荐对要对“.”进行转义“.”,在正则表达式中用“\”来进行转义。
^、$开始和结束标志这两个符号也是必须要加上的,不然这条规则:/rest/test/id-([0-9]+)/name-([a-z0-9A-Z]+)/index.html,仅表示部分匹配,很容易造成规则覆盖,而且UrlRewriteFilter只匹配第一条符合的rule。
正则注意事项的最后一点,UrlRewriteFilter似乎不支持问号,无论转义与否都无法匹配,碰到这种情况,推荐使用减号“-”,或者下划线“_”代替。
- 伪静态—urlRewrite
- java urlrewrite伪静态
- urlrewrite 伪静态
- UrlRewrite伪静态
- UrlRewrite实现伪静态
- 伪静态URLRewrite
- 伪静态--urlrewrite
- 伪静态-URLRewrite 详解
- UrlRewrite--URL伪静态
- urlrewrite伪静态匹配问题
- urlrewrite(伪静态技术运用)
- 伪静态URLRewrite学习笔记
- 伪静态URLRewrite学习笔记
- 伪静态URLRewrite学习笔记
- 伪静态URLRewrite学习笔记
- 伪静态URLRewrite学习笔记
- UrlRewrite实现url伪静态
- 伪静态URLRewrite学习笔记
- 降维的四种方法:PCA、LDA、LLE、Laplacian Eigenmaps
- 获取当日0点和24点时间戳的方式
- 《JavaScript高级语言设计》(第三版)学习笔记(3)
- CPU调度的故事(请看完)
- DBFlow框架的使用
- 伪静态—urlRewrite
- 【LEET-CODE】35. Search Insert Position
- ReactiveCocoa 和 MVVM 入门
- 面向切面编程(AOP)的理解
- 历届试题 危险系数 (蓝桥杯)
- spring源码编译
- Ubuntu的机器如何让beep发声
- javascript 实现全局常量读写方法
- vue实现筛选功能