您的位置:首页 > 运维架构 > 网站架构

使用URL Rewrite 实现网站伪静态

2015-06-05 17:17 525 查看
对于 Java Web来说,要实现伪静态非常简单:可以通过 Filter 拦截所有发向 *.html 请求,然后 按照某种规则,将请求 forward 到实际的 *.jsp 页面即可。

现有的 URL Rewrite 开源项目 为这种思路 提供了实现,使用 URL Rewrite 实现网站伪静态:

1、登录  http://www.tuckey.org/urlrewrite/ 站点,下载最新的版本;

2、下载 xxx-xxx-src.zip 文件,将文件解压缩,文件路径如下:

api:API文档

lib:编译和运行所需要的第三方类库

manual:存放了URL Rewrite 项目使用手册

src:存放了URL Rewrite 的源代码

webapp:示例应用

LICENSE.txt:杂项文档

3、在 web.xml 中配置启用 URL Rewrite Filter,在 web.xml 文件中,增加如下配置片段:

<span style="white-space:pre">			</span><filter>
<filter-name> UrlRewriteFilter </filter-name>
<filter-class> org.tuckey.web.filters.urlrewrite.UrlRewriteFilter  </filter-class>
</filter>
<filter-mapping>
<filter-name> UrlRewriteFilter </filter-name>
<filter-pattern> /* </filter-pattern>
</filter-mapping>

拦截所有的用户请求

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

<span style="white-space:pre">		</span><?xml version="1.0" encoding="GBK" ?>
<!DOCTYPE urlrewrite PUBLIC ………………>
<urlrewrite>
<rule>
<form> /userinf-(\w*).html </form>
<to type="forward" >/userinf.jsp?username=$1  </to>
</rule>
</urlrewrite>

上面的规则文件 定义了一条简单的规则: 所有发向 /userinf-(\w*).html 的请求都将被 forward 到 userinf.jsp 页面,并将(\w*) 正则表达式所匹配的内容 作为username 的参数值。根据这个伪静态规则,我们应该为该应用提供一个 userinf.jsp 页面,显示用户信息;

<head>
<title><%= user %>个人信息</title>
</head>
<body>
<%
out.println(“现在时间是:” + new java.util.Date() + “ </br>”);
out.println("用户名: " + user);
%>
</body>

标题栏会出现 user 的值,,并且 系统因为使用了 URL Rewrite, 因此用户可以请求类似 userinf-xxx.html 页面;

例如:userinf-crazy.html 

user 的值就会 被赋予 crazy。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  URL Rewrite