使用URL Rewrite 实现网站伪静态

对于以JSP为表现层开发的动态网站来说,用户访问的URL通常有如下形式:

xxx.jsp?param=value...

大部分搜索引擎都会优先考虑收录静态的HTML页面,而不是这种动态的*.jsp 、.php 页面。但实际上绝大部分网站都是动态的,不可能全都是静态的HTML页面,因此互联网上的大部分网站都会考虑使用伪静态——就是将.jsp、.php这种动态URL伪装成静态的HTML页面。

对于java web应该来说,要实现伪静态非常简单:可以通过Filter拦截所有发现.html请求,然后按某种规则将请求forward到实际的.jsp页面即可。现有的URL Rewrite开源项目为这种思路提供了实现。

下面详细介绍如何利用URL Rewrite 实现网站伪静态。

  1. 登录http://www.tuckey.org/urlrewrite/站点
    或者http://code.google.com/p/urlrewritefilter/downloads/liat下载URL Rewrite 的最新版
  2. 下载urlrewritefilter-4.0.3.jar,并将该jar包复制到Web应用的WEB-INF\lib目录下。
  3. 在web.xml文件中配置启用URL Rewrite Filter ,在web.xml文件中增加如下配置:
//配置URL Rewrite 的 Filter
<filter>
    <filter-name>URLRewriteFilter</filter-name>
    <filter-class>org.tuckey.web.filters.urlrewrite.URLRewriteFilter</filter-class>
</filter>

//配置URL Rewrite 的 Filter拦截所有请求
<filter-mapping>
    <filter-name>URLRewriteFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

在应用的WEB-INF路径下增加urlrewrite.xml文件,该文件定义了伪静态映射规则,这份伪静态规则是基于正则表达式的。

下面是本应用所使用的urlrewrite.xml伪静态规则文件。

<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.2//EN"
        "http://tuckey.org/res/dtds/urlrewrite3.2.dtd">
<urlrewrite>
    <rule>
    <!-- 所有配置如下正则表达式的请求 -->
    <from>/userinf-(\w*).html</from>
    <!-- 将被forward到如下jsp界面,其中$1代表上面第一个正则表达式所匹配的字符串 -->
    <to type="forward">/userinf.jsp?username=$1</to>
    </rule>
</urlrewrite>

上面的规则文件中只定义了一个简单的规则:所有发向userinf-(\w*).html的请求都将被forward到userinf.jsp页面,并将(\w*)正则表达式所匹配的内容作为username参数值。根据这个伪静态规则,需要为该应用提供一个userinf.jsp页面。当用户访问userinf.html页面时,实际展示的是userinf.jsp页面。

参考资料:轻量级java EE企业应用实战(第4版) 李刚编著 电子工业出版社

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值