`
hujin1123
  • 浏览: 23792 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

jsp 用urlrewrite 实现URL 重写

阅读更多
    是否看到别人的网站网址名都不带后缀名比较酷,比如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
这样就简单的实现了伪静态的效果
分享到:
评论
18 楼 wxq594808632 2009-09-30  
好能挖坑...
17 楼 grandboy 2009-09-30  
JavaEye是用REST来做的。我觉得要实现这种REST式的URL应该用相应的框架。Java有很多这方面的框架, 我最喜欢的就是Jersey, MyEclipse里集成的就是这个框架。 很容易就做出这种应用。
16 楼 zistrong 2009-09-30  
JavaEye也应该用到了这方面的技术,我打算也把做的项目改成这样。
15 楼 ningmenglovesoft 2009-09-24  
伪静态。让你的网站更容易被搜索爬虫爬到。
14 楼 52snail 2009-07-15  
likeblood 写道
二级域名不需要服务商吧
服务器上只要能配置就行了吧

但需要首先支持范解析
13 楼 cn-done 2009-07-14  
补充说明一下:10楼的兄弟的写法太搞复杂了,并不是越复杂越好
turbshop里面也用到了url rewrite  查看配置文件,写法超简单,很清晰。
12 楼 cn-done 2009-07-14  
cheneyjuu 写道
用Apache可以实现:
一 打开 Apache 的配置文件 httpd.conf 。
二 将#LoadModule rewrite_module modules/mod_rewrite前面的#去掉
三 在 httpd.conf中添加:
<IfModule mod_rewrite.c>
    RewriteEngine On
    #RewriteCond %{ENV:SCRIPT_URL} (?:index|dispbbs)[-0-9]+\.html
    RewriteRule ^(.*?(?:index|dispbbs))-([-0-9]+)\.html$ $1.php?__is_apache_rewrite=1&__rewrite_arg=$2
</IfModule>

四 要实现asp帖子URL到php帖子的映射,在 第三步的<IfModule mod_rewrite.c>和</IfModule>之间添加:
    RewriteMap tolowercase int:tolower
    RewriteCond %{QUERY_STRING} (?:boardid|page|id|replyid|star|skin)\=\d+ [NC]
    RewriteRule ^(.*(?:index|dispbbs))\.asp$ $1.php?${tolowercase:%{QUERY_STRING}}&__is_apache_rewrite=1

五 保存httpd.conf并重启Apache。


麻烦这位帅哥再讲的详细点。
你这个是绑定了apache了,个人比较倾向于通过urlrewrite包来实现,可以与应用绑定,方便迁移
11 楼 yisafe 2009-07-14  
非常完善,谢谢LZ贡献,NET下实现的URL重写比JAVA的复杂多了。
10 楼 cheneyjuu 2009-07-13  
用Apache可以实现:
一 打开 Apache 的配置文件 httpd.conf 。
二 将#LoadModule rewrite_module modules/mod_rewrite前面的#去掉
三 在 httpd.conf中添加:
<IfModule mod_rewrite.c>
    RewriteEngine On
    #RewriteCond %{ENV:SCRIPT_URL} (?:index|dispbbs)[-0-9]+\.html
    RewriteRule ^(.*?(?:index|dispbbs))-([-0-9]+)\.html$ $1.php?__is_apache_rewrite=1&__rewrite_arg=$2
</IfModule>

四 要实现asp帖子URL到php帖子的映射,在 第三步的<IfModule mod_rewrite.c>和</IfModule>之间添加:
    RewriteMap tolowercase int:tolower
    RewriteCond %{QUERY_STRING} (?:boardid|page|id|replyid|star|skin)\=\d+ [NC]
    RewriteRule ^(.*(?:index|dispbbs))\.asp$ $1.php?${tolowercase:%{QUERY_STRING}}&__is_apache_rewrite=1

五 保存httpd.conf并重启Apache。
9 楼 jr.yang 2009-01-06  
如何用urlrewrite 实现只有指定的URL才可以访问??
8 楼 jr.yang 2009-01-06  
如何用urlrewrite 实现只有指定的URL才可以访问??
7 楼 ray_linn 2008-11-19  
二级domain在apache里就可以设置,urlwriter几乎很难实现,我早尝试过了。

与其那么麻烦,不如直接在apache里搞定好了。
6 楼 eyeqq 2008-11-18  
hujin1123 写道
这样就简单的实现了伪静态的效果

伪静态有什么用呢?掩耳盗铃的感觉?
5 楼 likeblood 2008-10-22  
二级域名不需要服务商吧
服务器上只要能配置就行了吧
4 楼 stephen830 2008-10-22  
二级域名的话,首先你的域名所设的域名服务器要支持范域名解析,这要和你的服务商确认,一般的都是支持的。

然后在你的域名设置中加1条A记录设置  *.你的域名.com  111.222.333.444(你的服务器主机ip地址)

这样子任何以 .你的域名.com 结尾的请求都会指向到你的主机ip地址。

接下来就是你的服务器WEB应用要根据收到的请求头进行处理。

3 楼 bcw104 2008-10-21  
cjjer 写道
二级域名的设置可以啊,看你怎么搞而已。。。。

怎么设置二级域名啊,就是做到类似QQ空间那样的url,除了用urlrewrite.jar,还有没有别的办法,urlrewrite.jar好像只是用过滤器进行了一个url虚拟映射吧。
2 楼 cjjer 2008-10-20  
二级域名的设置可以啊,看你怎么搞而已。。。。
1 楼 ray_linn 2008-10-20  
没办法实现二级域名~没啥用,效率又不好。

相关推荐

    urlrewrite重写URL伪静态请求路径.

    标题 "urlrewrite重写URL伪静态请求路径" 涉及到的是Web开发中的一个重要概念——URL重写,这是为了优化网站的SEO(搜索引擎优化)和用户体验而进行的一种技术手段。URL重写允许我们将复杂的动态URL转换为简洁、易于...

    urlrewrite地址重写实例配置说明

    **URLRewrite地址重写**是Web开发中一个重要的技术,它主要用于优化和管理网站的URL,使得URL更友好、更具可读性,同时也能够实现动态URL到静态URL的转换,提升SEO效果。URLRewrite通常与Apache的mod_rewrite或者在...

    urlrewrite3.04的demo

    `urlrewrite`是一款优秀的Java库,专门用于处理URL重写,它使得动态网站能够展现静态化URL的效果,提升网站的专业性和可读性。`urlrewrite`框架兼容于Java Servlet容器,如Tomcat,Jetty等,广泛应用于JSP项目中。 ...

    URLRewrite配置和使用

    URLRewrite是一种URL重写技术,它可以满足搜索引擎的要求,隐藏技术实现,提高网站的移植性,并满足美感的要求。下面将详细介绍URLRewrite的配置和使用。 1. 满足搜索引擎的要求 搜索引擎对URL的要求非常严格,...

    URLrewrite-实例

    本文将深入探讨URL重写的基本概念,并以Java实现的开源库`URLrewrite`为例,详细解析其实现方式和应用场景。 首先,理解URL重写的核心概念。URL重写是服务器端的一种技术,通过HTTP服务器或应用程序动态改变请求和...

    JSP项目的URL重写

    综上所述,`urlrewritefilter`是JSP项目中实现URL重写的一个强大工具,通过合理的配置和规则设定,可以极大地改善Web应用的URL结构,提高用户体验和SEO效果。理解并熟练运用它的配置和规则,对于提升Web应用质量具有...

    Url Rewrite 实现jsp页面伪静态化_凌风_.doc

    3. **配置规则**:`urlrewrite.xml`文件中定义了URL重写的规则。例如: - **从一个文件到另一个文件的转发**:`&lt;from&gt;`和`&lt;to&gt;`元素用于指定源URL和目标URL。不使用正则表达式时,配置可能过于复杂。 - **重定向...

    java urlrewrite解决默认页问题

    为了实现URL重写功能,我们需要在`web.xml`中配置URL Rewrite Filter,并在`urlrewrite.xml`中定义重写规则。 **1. `web.xml` 配置:** ```xml &lt;filter-name&gt;UrlRewriteFilter &lt;filter-class&gt;org.tuckey.web....

    java中的url重写

    在 Java 中,有多种方式可以实现 URL 重写,包括使用 WEB 服务器自身提供的组件和使用开源项目 UrlRewrite Filter。 UrlRewrite Filter 是一个基于 Java 的开源项目,它提供了一种灵活的方式来实现 URL 重写。它...

    urlrewrite

    在Web开发中,URL重写是一种常见的技术,它能够帮助我们优化网站的URL结构,提高搜索引擎优化(SEO),以及实现更加友好的用户界面。本文将重点讲解Java环境下的URL重写工具——URLRewrite,并深入探讨其工作原理、...

    urlRewrite

    ### URL重写(UrlRewrite)技术详解 #### 一、引言 URL重写(UrlRewrite)是一种网络服务器功能,它允许开发者通过规则来转换客户端请求的URL,从而达到美化URL、增加安全性以及提高搜索引擎优化(SEO)的效果。在...

    jsp 动态转静态 URL重写

    四、jsp动态转静态URL重写实现 1. 使用Apache的mod_rewrite模块:在Apache服务器中,通过.htaccess文件配置规则,将请求的动态URL重定向到对应的静态URL。例如: ```RewriteRule ^article/(\d+).html$ article.jsp...

    urlrewrite 3.2.0 java包

    URLRewrite 是一个功能强大的URL重写和转换工具,适用于Java环境。它基于Apache的Tuckey项目,为Web应用程序提供了类似于Apache HTTP服务器的mod_rewrite模块的功能。在3.2.0这个版本中,开发者可以期待更稳定、更...

    urlrewrite静态页面的使用例子

    在本文中,我们将深入探讨如何使用`urlrewrite`框架来实现静态页面的转换,这是一个在J2EE环境中常用于URL重写和管理的工具。`urlrewrite`框架可以帮助开发者优化URL结构,使其更加用户友好,同时也便于搜索引擎优化...

    urlrewrite 支持自定义多配置文件(*通配符)

    urlrewrite 只支持单个配置文件,默认的配置文件为:/WEB-INF/urlrewrite.xml 现在对urlrewrite-3.2的源码进行了修改,使它能够支持多文件和通配符的形式加载自定义配置文件,即可以进行如下的配置: &lt;param-name&gt;...

    Struts2下使用urlReWrite的最简实例(MyEclipse工程)

    `urlRewrite`是Tuckey开源组织提供的一个URL重写过滤器,它能够帮助我们在Struts2应用中实现这个目标。 在这个最简实例中,我们将探讨如何在MyEclipse环境中集成Struts2和urlRewrite,创建一个基本的应用来演示URL...

    jsp的一个url重写

    在探讨“jsp的一个url重写”这一主题时,我们深入解析了达内郑州中心老师分享的关于URL重写的实现方式,这不仅展示了JSP技术在动态网页开发中的灵活性,也揭示了URL重写在提高用户体验、优化SEO以及简化URL结构方面...

    urlrewrite简单例子

    "urlrewrite"是一个非常实用的工具,它基于Apache服务器的URL重写模块,可以帮助开发者轻松实现动态URL到静态URL的转换。本篇文章将深入探讨如何使用urlrewrite实现动态页面静态化,并通过具体的例子来阐述这一过程...

    url rewrite filter实例

    URL重写过滤器(URL Rewrite Filter)是一种在Java Web应用程序中使用的开源工具,主要用于修改HTTP请求的URL,以便实现友好的、SEO优化的或者更安全的URL结构。这个过滤器通常与Apache Tomcat服务器和Spring MVC等...

Global site tag (gtag.js) - Google Analytics