`

使用UrlRewrite实现URL伪静态化

    博客分类:
  • JAVA
阅读更多

1.首先下载urlrewirtefilter

2.解压所下载的文件,把urlrewrite-2.6.0.jar复制到项目的WebRoot/WEB-INF/lib/目录下

3.把urlrewrite.xml复制到项目的WebRoot/WEB-INF/目录下

4.在web.xml文件中加入filter

<filter-name>UrlRewriteFilter</filter-name> <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class> <param-name>logLevel</param-name> <param-value>WARN</param-value> <filter-name>UrlRewriteFilter</filter-name> <url-pattern>/*</url-pattern>

5.配置urlrewrite.xml
1.普通url静态化 例如:
要把http://localhost/prjtest/user/list.jsp转换成http://localhost/prjtest/user/list.html这种是最简单的,当一个servlet跳转到list.jsp页面列出user列表时,在urlrewrite.xml中这样配置:

<from>^/user/list.html</from> <totype="redirect">/user/list.jsp</to>


当请求/user/list.html这个页面时,实际上相当于请求/user/list.jsp页面,在servlet的跳转要这样写:response.sendRedirect("./user/list.html");

2要把http://localhost/prjtest/user/view.jsp?cid=1&cname=admin转换成http://localhost/prjtest/user/view/1_admin.html在urlrewrite.xml中这样配置:

<from>^/user/view/([0-9]+)_([a-z]+).html$</from> <totype="redirect">/user/view.jsp?cid=$1cname=$2</to>

6特别说明
为什么地址栏不变?
原因就在于浏览器显示的是最后被给定的URL。当一个URL被提交后,在某一个组件返回一个相应给浏览器之前,你的应用可能转发请求多次。所有这些都发生在服务器端,浏览器并不知道发生了什么事。当一个Http相应被放回时,它并没有包含地址信息,所以浏览器仅仅显示用来作为初始请求的地址。

要想让地址栏也变成静态化的URL,很简单,将<to type="redirect">改成<to type="forward">即可

 

<!-------------转jsp相同,需要修改的地方是:----------------->

<filter-mapping> 
        <filter-name>struts2 </filter-name> 
        <url-pattern>*.do </url-pattern> 
        <dispatcher>REQUEST </dispatcher> 
      <dispatcher>FORWARD </dispatcher> 
      <dispatcher>INCLUDE </dispatcher> 
    </filter-mapping>

1.1URLRewirte的用处
1.满足搜索引擎的要求。

2.隐藏技术实现,提高网站的移植性。

3.满足美感的要求(个人感觉这个用处太牵强)。

1.2项目部署
1.首先在http://tuckey.org/urlrewrite/下载urlrewirtefilter,现在有2.6.0和3.2.0两个版本,这里我选择的是前面一个稳定版本。

2.解压所下载的文件,把urlrewrite-2.6.0.jar复制到项目的WebRoot/WEB-INF/lib/目录下,然后编译。

3.把urlrewrite.xml复制到项目的WebRoot/WEB-INF/目录下

4.在web.xml文件中加入以下:

1 <!-- 动态地址静态化 -->

2 <filter>

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

4   <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>

5   <init-param>

6     <param-name>logLevel</param-name>

7     <param-value>WARN</param-value>

8   </init-param>

9 </filter>

10 <filter-mapping>

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

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

13 </filter-mapping>


5.需要配置urlrewrite.xml文件来实现url静态化,下面将详细说明

1.3 如何静态化
到这里相关的配置已经完成,下面看如何把动态地址静态化:

(1)普通url静态化

例如:要把http://localhost/prjtest/user/list.jsp转换成http://localhost/prjtest/user/list.html

这种是最简单的,当一个servlet跳转到list.jsp页面列出user列表时,在urlrewrite.xml中这样配置:

1 <rule>

2   <from>^/user/list.html</from>

3   <to>/user/list.jsp</to>

4 </rule>


当请求/user/list.html这个页面时,实际上相当于请求/user/list.jsp页面

在servlet的跳转要这样写:

response.sendRedirect("./user/list.html");

(2)带参数的url静态化

例如:要把http://localhost/prjtest/user/view.jsp?cid=1&cname=admin转换成

       http://localhost/prjtest/user/view/1_admin.html

在urlrewrite.xml中这样配置:

1 <rule>

2   <from>^/user/view/([0-9]+)_([a-z]+).html$</from>

3   <to>/user/view.jsp?cid=$1&cname=$2</to>

4 </rule>


当请求/user/view/1_admin.html这个页面时,实际上相当于请求/user/list.jsp?cid=1&cname=admin页面,在servlet的跳转要这样写(cid,cname为变量):

response.sendRedirect("./user/view/"+ cid +"_"+ cname +".html");

注意:配置文件中用"&"来代替"&"。

一个通用的正则表达式:[a-zA-Z0-9]+

1.4 小结
       使用URLRewirte可以方便的进行地址伪静态化,配置规则也相对比较方便。不过在项目设计的时候需要制定地址匹配规则,以使在开发的过程中直接利用该规则进行编码。如果是对已有的项目进行地址伪静态化比较麻烦,需要对所有的页面、跳转进行修改,工作量较大,同时也容易忽略一些URL。

       一句话,其实它并没有达到静态化要求,只是相当于将地址进行了改写。

评论

此方法,只是实现了你可以通过html的后缀名来访问,不是无论是是 .jsp进入还是什么都在地址栏显示 html后缀名。

分享到:
评论

相关推荐

    UrlRewrite实现伪静态

    在本文中,我们将深入探讨如何使用UrlRewrite来实现伪静态,并了解其配置过程。 1. **什么是URL重写**: URL重写是指将动态URL转换为静态或者看似静态的URL,以提升网站的可读性和美观性。动态URL通常包含多个参数...

    使用URL Rewrite实现网站的伪静态实例(urlrewritefilter-4.0.3)

    通过上述步骤,我们可以使用`UrlRewriteFilter 4.0.3`轻松实现网站的伪静态。这种技术不仅能够提高网站的可读性和美观性,还能对SEO产生积极影响,让搜索引擎更好地抓取和理解网页内容。同时,通过灵活的规则配置,...

    java urlrewrite 实现伪静态化 demo源码

    在这个"java urlrewrite 实现伪静态化 demo源码"中,我们可以深入理解如何使用URLRewrite框架来转化动态URL为更加友好的静态形式。 URLRewrite的核心概念是规则配置,通过定义一系列规则,可以将带有参数的动态URL...

    asp net UrlReWrite Url重写或伪静态 完美示例源码

    在ASP.NET中,`UrlRewrite`模块同样可以用于实现伪静态。例如,可以设置规则将`/product.aspx?id=123`转换为`/product/123.html`。这样做不仅可以优化SEO,还可以避免用户看到带有`.aspx`扩展名的URL,提升用户体验...

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

    Url Rewrite Filter 是一款基于Java...1. **URL伪静态化**:Url Rewrite Filter 可以将带有参数的动态URL,如`http://localhost:8080/myindex.do?method=listIndex&user=ezplus`,重定向到看起来像是静态页面的URL,如`...

    URLRewrite.dll 伪静态

    要使用URLRewrite.dll实现伪静态,你需要进行以下步骤: 1. **安装URLRewrite模块**:首先确保你的IIS服务器已经安装了URLRewrite模块,如果没有,可以通过Web Platform Installer进行安装。 2. **配置rewrite规则*...

    JSP使用URLRewirte实现url地址伪静态化

    总结,JSP中使用URLRewrite实现URL伪静态化能够提高网站的专业性,增强用户体验,同时对SEO有显著的提升。理解并熟练掌握URLRewriteFilter的配置和规则编写,将使你的Web应用程序更具竞争力。通过不断实践和优化,你...

    UrlReWrite(Url重写或伪静态)完美示例源码

    描 述:UrlReWrite(Url重写或伪静态)完美示例源码 UrlReWrite(Url重写或伪静态)完美示例源码,已利用ActionlessForm解决原始地址form回传的问题 例如:/products.aspx?category=books 转换为/products/Books....

    Url Rewrite Filter实现页面伪静态化,简单实例及步骤

    ### Url Rewrite Filter 实现页面伪静态化:详细步骤与实例解析 #### 一、引言 在现代Web开发中,为了提升用户体验、提高搜索引擎友好度以及优化网站结构,页面伪静态化成为了一种常见的技术手段。本文将详细介绍...

    用urlrewrite实现实现伪静态的例子

    在本例子中,我们将探讨如何使用URLRewrite模块来为ASP.NET网站实现实现伪静态。 首先,我们需要理解为什么需要伪静态。静态网页易于被搜索引擎抓取,而动态网页往往因为参数过多、变化频繁而不利于爬虫。因此,将...

    urlrewrite2伪静态与使用文档(IIS)

    标题“urlrewrite2伪静态与使用文档(IIS)”涉及到的是在IIS(Internet Information Services)服务器环境中,使用urlrewrite2模块实现URL重写和伪静态功能的技术内容。URL重写是Web开发中的一项关键技术,它允许...

    UrlReWrite(Url重写或伪静态)

    UrlRewrite是一个强大的URL管理工具,它主要用于将复杂的URL转换为简单、易记且友好的形式,这个过程被称为URL重写或伪静态处理。在Web开发中,URL重写技术对于提升用户体验、优化搜索引擎排名(SEO)以及维护网站...

    Url Rewrite伪静态组件64位

    `Url Rewrite伪静态组件`是Microsoft为IIS(Internet Information Services)提供的一款强大工具,用于实现这种功能。本文将深入探讨这个组件的原理、安装与配置过程,以及其在实际应用中的重要性。 首先,让我们...

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

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

    伪静态 urlrewrite

    在Java Web开发中,"伪静态 URLRewrite"是一个重要的技术概念,主要用于优化网站的URL结构,使其看起来更像静态页面,从而提升用户体验和搜索引擎优化(SEO)。`URLRewrite`是一个基于Apache开源项目Tuckey开发的...

    网站重写url伪静态工具

    ISAPI_Rewrite,ISAPI_Rewrite用来实现伪静态,将动态网页通过重写URL的方法实现去掉动态网页的参数!它的行为是像Apache的mod_Rewrite ,但专为微软的Internet信息服务( IIS )。 IIS配置相当简单,配置好之后就有...

    Discuz! X2 配置URL伪静态Rewrite规则

    Discuz! X2 配置URL伪静态Rewrite规则,里面详细讲解了apache服务器下 Discuz! X2 配置URL伪静态Rewrite规则和IIS下得Discuz! X2 配置URL伪静态Rewrite规则

Global site tag (gtag.js) - Google Analytics