您的位置:首页 > 其它

URLRewrite实现伪静态 url重写

2012-09-23 15:01 316 查看
是否看到别人的网站网址名都不带后缀名比较酷,比如qq空间的地址,其实用urlrewrite这个包很容易就实现了。

下面是使用说明:

1.下载urlrewrite,官方下载地址:http://tuckey.org/urlrewrite/dist/urlrewritefilter-2.6.zip

2.解压缩文件,压缩包内文件copy到项目中(压缩包位置 -> 项目位置):

urlrewrite-2.6.0-src/webapp/WEB-INF/lib/urlrewrite-2.6.0.jar -> WebRoot/WEB-INF/lib/urlrewrite-2.6.0.jar

urlrewrite-2.6.0-src/webapp/WEB-INF/urlrewrite.xml -> WebRoot/WEB-INF/urlrewrite.xml

3.将以下代码添加到web.xml里

<filter>

<filter-name>UrlRewriteFilter</filter-name>

<filter-class>

org.tuckey.web.filters.urlrewrite.UrlRewriteFilter

</filter-class>

</filter>

<filter-mapping>

<filter-name>UrlRewriteFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

4.修改urlrewrite.xml

<?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">

<!--

Configuration file for UrlRewriteFilter

http://tuckey.org/urlrewrite/

-->

<urlrewrite>

<rule>

<from>^/([a-z]+)$</from>

<to type= "forward" >/world.jsp?id=$1</to>

</rule>

<rule>

<from>^/world/(.*)$</from>

<to>/world.jsp?tid=$1</to>

</rule>

<rule>

<from>^/(.*).html$</from>

<to>/test1/$1.jsp</to>

</rule>

<outbound-rule>

<note>

The outbound-rule specifies that when response.encodeURL is called (if you are using JSTL c:url)

the url /rewrite-status will be rewritten to /test/status/.

The above rule and this outbound-rule means that end users should never see the

url /rewrite-status only /test/status/ both in thier location bar and in hyperlinks

in your pages.

</note>

<from>/rewrite-status</from>

<to>/test/status/</to>

</outbound-rule>

</urlrewrite>

rule是url重写规则,from是显示出来的地址,to是映射的实际地址,$1是重写参数,可以为多个,()里是匹配的正则表达式.

好了,在项目中新建world.jsp,启动tomcat,输入

http://localhost:8080/mysite/world/1

mysite是你的项目名

实际上访问的是http://localhost:8080/mysite/world.jsp?tid=1

这样就简单的实现了伪静态的效果
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: