`

[urlrewrite]使用urlrewrite进行地址自动重定向

    博客分类:
  • Java
阅读更多

一般通过url访问网站,url的格式都是

http://xxx.xxx.com?param=p1&param=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);
	}
}

 

通过单元测试,可以快速知道自己配置是否会有问题。至此全部完成。

分享到:
评论

相关推荐

    urlrewrite-maven-example.zip

    《URLRewrite:掌握网页地址重写的关键技术》 URLRewrite是一款强大的URL管理工具,尤其在Java Web应用中广泛使用,它可以帮助开发者实现URL的重写和转换,以达到优化URL、隐藏真实路径、提高SEO效果等目的。在本篇...

    urlrewrite地址重写实例配置说明

    当用户访问一个特定的URL时,URLRewrite会根据预设的规则对URL进行匹配,并根据匹配结果对URL进行相应的操作,如替换、添加、删除部分字符串,或者直接进行内部重定向,而浏览器的地址栏显示的仍然是原始的URL。...

    UrlRewrite.rar

    本篇文章将围绕“UrlRewrite.rar”这一主题,深入探讨URL重写的基本原理以及如何使用UrlRewrite工具进行实践操作。 一、URL重写概述 URL重写,顾名思义,就是将实际的、可能复杂难懂的URL转换为用户友好的、易于...

    urlrewrite技术研究总结成果

    在本研究总结中,我们将深入探讨URLRewrite的核心概念、使用场景以及配置方法,同时提供相关的学习资源,包括文档、代码示例、jar包、源代码和演示项目。 1. URL重写基础: URL重写技术的核心思想是通过HTTP请求的...

    urlrewrite3.04的demo

    `urlrewrite`框架是Java Web开发中强大的URL管理工具,它提供了灵活的URL重写和重定向能力,有助于提升网站的用户体验和SEO效果。通过Eclipse工程的示例,开发者可以直观地学习和实践URL重写技术,进一步提升项目的...

    UrlRewrite域名重写

    UrlRewrite是一个强大的URL管理工具,常用于ASP.NET应用程序中,它允许开发者通过自定义规则对网站的URL进行重写和转换。这个技术的核心在于提供更友好的、搜索引擎优化(SEO)的URL,同时也可以帮助解决网站迁移或...

    URL重定向,动态加载二级域名

    在`URLRewriter`工具或框架的帮助下,开发者可以实现这个功能,例如Apache的mod_rewrite模块或.NET中的URLRewrite模块。URL重定向的主要用途包括: 1. **SEO优化**:通过重定向,可以将旧的、不再使用的URL映射到新...

    URLrewrite-实例

    在使用`URLrewrite`时,我们需要创建一个名为`urlrewrite.xml`的配置文件,其中定义了各种重写规则。例如,以下规则将所有以“/article”开头的请求重定向至“/content/article”: ```xml ^/article/(.*)$ &lt;to&gt;...

    iis urlrewrite文件

    虽然IIS URL Rewrite的配置通常是在IIS管理器中进行,但如果你在Apache环境中工作,会使用httpd.conf配置文件。在这个文件中,你可以使用类似Apache的RewriteEngine、RewriteRule和RewriteCond指令来实现URL重写。...

    IIS Urlrewrite2

    1. **安装**:下载并安装IIS URL重写2的扩展,通常是`IIS Urlrewrite2.exe`文件,通过IIS Manager进行安装。 2. **添加规则**:在IIS Manager中选择目标站点,然后在“管理服务”下找到“URL重写”,点击“添加规则...

    UrlRewrite.dll

    UrlRewrite.dll是微软IIS(Internet Information Services)服务器中的一个关键组件,主要负责URL重写功能。在网站开发和管理中,它扮演着至关重要的角色,尤其在优化搜索引擎优化(SEO)、实现友好的URL结构以及...

    url rewrite组件.rar

    "iis urlrewrite"标签进一步明确了我们讨论的是与IIS服务器相关的URL重写功能。IIS是微软提供的一个用于Windows操作系统的Web服务器,而URL Rewrite是IIS的一个扩展模块,用于处理和转换HTTP请求的URL。 在压缩包的...

    URLRewrite.dll

    1. 引入`System.Web.Rewrite`命名空间,这是使用`URLRewrite.dll`所需的库。 2. 创建`RewriteEngine`实例,它是处理重写规则的核心对象。 3. 定义重写规则,比如使用`RewriteRule`类创建规则,指定原始URL模式、目标...

    URLRewrite URL重写组件

    1. **安装**:URLRewrite组件通常作为IIS扩展通过Web Platform Installer进行安装,也可以手动下载并安装相应的MSI文件。 2. **配置**:配置主要在`web.config`文件中进行,通过添加`&lt;system.webServer&gt;`节点下的`...

    urlrewrite

    URLRewrite是基于Apache开源项目Tuckey开发的一款强大的URL管理过滤器,它可以方便地进行URL重写和URL映射,使得复杂的服务器端请求路径可以被转换为简洁、易读的URL。在Java Web应用程序中,URLRewrite常用于隐藏...

    网站安全urlrewrite教程和jar包

    在本教程中,我们将深入探讨URL重写的核心概念、使用场景以及如何借助`urlrewrite`工具来实现这一功能。 首先,URL重写的核心原理是利用服务器的内部重定向机制,将用户请求的可见URL转换为服务器内部处理的实际URL...

    UrlRewrite例子

    UrlRewrite是一个强大的URL重写工具,常用于Java Web应用中,尤其是与Struts2框架结合使用时,能够帮助开发者优化URL结构,提高网站的SEO友好性和用户体验。在这个"UrlRewrite例子"中,我们将深入探讨UrlRewrite的...

    urlrewrite完整示例2.6/3.2/4.0jar包

    在实际开发中,`URLRewrite`常用于Spring MVC、Struts等框架的项目,与这些框架配合使用,可以更好地管理应用程序的URL结构。 7. **注意事项**: - 配置文件的放置位置:通常放在WEB-INF目录下,确保不在公开访问...

    iis URL Rewrite

    除了重定向,URL Rewrite还能实现URL的隐式重写,即在不改变用户浏览器地址栏显示的情况下,将请求的URL转换为另一形式。这在隐藏真实路径、美化URL或统一URL结构时很有用。比如,将`...

    urlrewrite 3.2.0 java包

    要使用URLRewrite 3.2.0,首先需要将其JAR包添加到Web应用程序的`WEB-INF/lib`目录下。接着,在Web应用的`WEB-INF`目录下创建`urlrewrite.xml`配置文件,编写重写规则。 ### 4. 示例配置 ```xml &lt;urlrewrite&gt; ^...

Global site tag (gtag.js) - Google Analytics