[urlrewrite]使用urlrewrite进行地址自动重定向
2010-07-23 17:25
381 查看
一般通过url访问网站,url的格式都是
http://xxx.xxx.com?param=p1¶m=p2
这是最传统的访问方式,但是,对于一些具有特殊要求的系统,其所有的页面的地址并不一定是这样子的格式,或者是类似于struts风格的.do的方式,比如
http://xxx.xxx.com/aa.do
其中的aa并不是action映射名称,而是其中一个默认key的参数,比如在一些个人主页类型的系统中,如
http://xxx.xxx.com/quzishen --> 其实这样做背后我们真正希望的url是
http://xxxx.xxx.com/blog/personal.do?name=quzishen
这样访问系统,我们希望也能够被系统自动解析并正处处理,该如何做呢?
其中的一种方式,就是进行url的重定向,这里我们介绍使用urlrewirete来实现。
---------------------------------------------------------------------------------------
1、首先,下载urlrewrite-2.6.0.jar放到WEB-INF/lib下。下载地址 http://download.csdn.net/source/2568398
2、你需要在web.xml中进行配置urlrewrite的filter,这样请求才能被urlrewrite过滤并处理,配置方式跟普通filter无区别
其中,filter的参数如下(摘自文档),如果你只是想快速应用到系统中,可以暂时滤过下面内容。有空再好好研究即可。
1.
2.
3.
4.
5.
6.
7.
8.
9.
3、在WEB-INF下新建urlrewrite的配置文件 urlrewrite.xml (默认的名称,如果更改,需要跟上述配置中classpath进行匹配)
具体项目的配置,可以参见文章 http://blog.csdn.net/lgg201/archive/2010/02/27/5329364.aspx 至此配置已经全部结束,但是你可能想测试一下,自己的配置是否有问题,能否像测试java代码一样来通过单元测试完成这个过程?当然可以!
4、测试配置
编写单元测试类
通过单元测试,可以快速知道自己配置是否会有问题。至此全部完成。
17:24:12
http://xxx.xxx.com?param=p1¶m=p2
这是最传统的访问方式,但是,对于一些具有特殊要求的系统,其所有的页面的地址并不一定是这样子的格式,或者是类似于struts风格的.do的方式,比如
http://xxx.xxx.com/aa.do
其中的aa并不是action映射名称,而是其中一个默认key的参数,比如在一些个人主页类型的系统中,如
http://xxx.xxx.com/quzishen --> 其实这样做背后我们真正希望的url是
http://xxxx.xxx.com/blog/personal.do?name=quzishen
这样访问系统,我们希望也能够被系统自动解析并正处处理,该如何做呢?
其中的一种方式,就是进行url的重定向,这里我们介绍使用urlrewirete来实现。
---------------------------------------------------------------------------------------
1、首先,下载urlrewrite-2.6.0.jar放到WEB-INF/lib下。下载地址 http://download.csdn.net/source/2568398
2、你需要在web.xml中进行配置urlrewrite的filter,这样请求才能被urlrewrite过滤并处理,配置方式跟普通filter无区别
<filter> <filter-name>UrlRewriteFilter</filter-name> <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class> <init-param> <param-name>confReloadCheckInterval</param-name> <param-value>500000</param-value> </init-param> <init-param> <param-name>logLevel</param-name> <param-value>sysout:ERROR</param-value> </init-param> </filter> <filter-mapping> <filter-name>UrlRewriteFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
其中,filter的参数如下(摘自文档),如果你只是想快速应用到系统中,可以暂时滤过下面内容。有空再好好研究即可。
1.
confReloadCheckInterval:配置文件重加载间隔. 0表示随时加载, -1表示不重加载, 默认-1
2.
confPath:配置文件路径. 是相对context的路径, 默认/WEB-INF/urlrewrite.xml
3.
logLevel:设置日志级别, 可以是: TRACE, DEBUG, INFO(默认), WARN, ERROR, FATAL, log4j, commons, slf4j, sysout:{level}(比如 sysout:DEBUG), 如果你使用普通的日志级别有一定困难, 可以调为: sysout:DEBUG(表明是使用控制台输出的调试级别)
4.
statusPath:设置改变状态路径, 不能和已经安装的应用冲突(注意, 默认是/rewrite-status), 注意, 必须以/开始
5.
statusEnabled:设置status是否开启, 期望得到的值是true, false, 默认true
6.
statusEnabledOnHosts:设置允许status的主机, *可以被用作通配符, 默认是”localhost, local, 127.0.0.1”
7.
modRewriteConf:设置rewrite模式, 默认是false, 使用mod-rewrite(可以参照apache服务器的mod_rewrite相关资料)方式的配置文件, 如果设置为true并且confPath没有设置则配置文件路径将会被默认为/WEB-INF/.htaccess
8.
modRewriteConfText:从这些参数的值加从载mod_rewrite样式的配置, 设置这些参数则其他所有的参数都会被忽略. 比如:
<init-param>
<param-name>modRewriteConfText</param-name>
<param-value>
RewriteRule ^/~([^/]+)/?(.*) /u/$1/$2 [R]
RewriteRule ^/([uge])/([^/]+)$ /$1/$2/ [R]
</param-value>
</init-param>
9.
allowConfSwapViaHttp:设置是否允许通过HTTP方式交互设置参数, 比如, 通过调用/rewrite-status/?conf=WEB-INF/urlrewrite2.xml
3、在WEB-INF下新建urlrewrite的配置文件 urlrewrite.xml (默认的名称,如果更改,需要跟上述配置中classpath进行匹配)
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 2.6//EN" "http://tuckey.org/res/dtds/urlrewrite2.6.dtd"> <urlrewrite> <rule> <from>/blog/(.*)</from> <to>/blog/personal.do?name=$1</to> </rule> </urlrewrite>
具体项目的配置,可以参见文章 http://blog.csdn.net/lgg201/archive/2010/02/27/5329364.aspx 至此配置已经全部结束,但是你可能想测试一下,自己的配置是否有问题,能否像测试java代码一样来通过单元测试完成这个过程?当然可以!
4、测试配置
编写单元测试类
public class UrlRewriteConfigurationTest extends TestCase{ private static final Logger log = Logger.getLogger(UrlRewriteConfigurationTest.class); private static final String REWRITE_CONF = "urlrewrite.xml"; private Conf conf; private UrlRewriter rewriter ; protected void setUp() { InputStream istream = getClass().getResourceAsStream("/"+REWRITE_CONF); conf = new Conf(istream, REWRITE_CONF); rewriter = new UrlRewriter(conf); } private String rewireteUrl(String fromUrl)throws Exception{ MockRequest request = new MockRequest(fromUrl); MockResponse response = new MockResponse(); RewrittenUrl rewrittenUrl = rewriter.processRequest(request, response); if (rewrittenUrl==null) return "failed"; String rewrittenUrlString = rewrittenUrl.getTarget(); return rewrittenUrlString; } public void testRewrite() throws Exception { String fromUrl="http://xxx.xxx.com/quzishen"; rewireteUrl(fromUrl); }
通过单元测试,可以快速知道自己配置是否会有问题。至此全部完成。
17:24:12
相关文章推荐
- 使用百度地图进行详情地址自动补全
- Android——使用gradle进行多渠道自动打包
- HttpClient 4.3 使用post访问网页时设置自动重定向
- URLRewrite地址重定向的实现
- ViewFlipper的使用---自动播放(轮播图)的实现以及多个view进行切换
- 如何使用ANT自动进行数据库的相关操作
- PHP socket 编程之使用ip进行地址查询
- urlrewrite地址重写的使用
- 关于jmeter里的自动重定向的使用-小强性能测试培训班学生作品
- 使用 cron 进行自动维护
- linux主机使用rdesktop连接windows进行usb重定向
- 使用百度地图自动补全地址(两个输入框)
- URL重写:使用微软的URLRewrite组件进行ASP.NET URL
- 使用FTP自动进行文件传输
- Intellij IDEA 使用jrebel运行spring-boot并实现自动编译进行热部署
- (插播)关于使用jenkins + unity +Xcode 来进行自动打包的处理。
- 使用git进行web开发跟踪管理,并自动部署
- 【Webhooks】使用Git的Webhooks进行服务器自动部署代码
- Android使用OkHttp进行重定向拦截处理的方法
- 关于PHP程序使用file_get_content()函数进行抓取PHP程序与smarty结合编译过程中产生的静态文件,抓取不了?连接超时?(地址映射)