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

urlrewrite(伪静态技术运用2之outbound-rule)

 
阅读更多

问题:页面通过"/servlet/detail?magid=520&categoryId=205“来访问一个servlet,这个链接在IE地址栏上给人家看起来很不舒服,想把它伪装一下变成别的地址,例如想把它伪装成:/servlet/detail/520_205.html 或者其他的url地址那该怎么实现了?

【注意:页面连接不是“/servlet/detail/520_205.html “而是“/servlet/detail?magid=520&categoryId=205”】

urlrewrite.xml配置:

错误代码:

<urlrewrite>

<rule>
<from>/servlet/detail/([0-9]+)_([0-9]+).html</from>
<to>/servlet/detail?magid=$1&amp;categoryId=$2</to>
</rule>

</urlrewrite>

有很多新手刚开始就认为这样配置就能解决了上面提问的问题。其实错误,这样页面只能通过:”/servelt/detail/24_42.html ” 来访问,访问这个地址时它会forward到/servlet/detail?magid=24&categoryid=42这个servlet。如果我们页面通过“/servlet/detail?magid=24&categoryid=42”这样来访问的话,是不会被重写的。这是新手的常遇到的一个问题。

正确代码:

<urlrewrite>

<rule>
<from>/servelt/detail/([0-9]+)_([0-9]+).html</from>
<to>/servelt/detail?magid=$1&amp;categoryId=$2</to>
</rule>


<outbound-rule>
<from>/servlet/detail\?magid=([0-9]+)&amp;categoryId=([0-9]+)</from>
<to>/servlet/detail/$1_$2.html</to>
</outbound-rule>
</urlrewrite>

通过上面的配置基本上实现了上面的提出的问题。

1:通过:“/servlet/detail?magid=24&categoryid=42”来访问,得在<outbound-rule>标签中配置,同时还得在<rule>中配置相关信息。如果rule中没有配置,会找不到相关的资源信息,抱404错误

2:上面的配置文件得注意的地方:在<outbound-rule>中的特殊符号“?”“&”等得转义。不然的话也会出错,不能被重写。像上面的“outbound-rule>from标签中路径中如果出现“?”问号的话,记得要转义,“\?”。

3:jsp中,上面提出的问题中,在页面如果直接写<a href="/servlet/detail?magid=24&categoryid=42"/>这样也是错误的,同样也没办法被重写。

它只能用在response.encodeURL()或者jstl中c:url中,才会被重写。这个也是容易犯错的地方。

jsp:页面关键代码:

<a href="<c:url value='/servlet/detail?magid=3934&categoryId=3'/>">JSTl c:URL</a><hr/>
<a href="<%=response.encodeUrl("/servlet/detail?magid=3934&categoryId=3") %>">response EncodeURL</a>

4:如果想在<outbound-rule>中定义多个from to标签这个是不可以的,<outbound-rule>中只能定义一个from to 标签。这个是我在程序中测试得出来的结论。只能定义一对from to标签是在个人测试得出来的结论,如果您测试出来不是这样的话,请给我指正,评判。

5:通过上面的urlrewrite.xml的配置, <a href=”servlet/detail?44_77.html">测试</a>这样子来访问也是可以被重写的。也就是相当于双向。


这样便很好的隐藏了真实地址
这其中有点是需要注意的,引用官网中的一段话:
Using the example above JSP's with the code
<a href="<%= response.encodeURL("/world.jsp?country=usa&amp;city=nyc") %>">nyc</a>
will output
<a href="/world/usa/nyc">nyc</a>

Or JSTL
<a href="<c:url value="/world.jsp?country=${country}&amp;city=${city}" />">nyc</a>
will output
<a href="/world/usa/nyc">nyc</a>

需要转化的链接不能直接写在a标签中,需要写在c:url或其他服务器需要解析的变量中,这样才能对其重新显示

注意:<rule>标签可以单独的存在。而<outbound-rule>必须要和<rule>标签成对出现。而且在页面的时候需要<c:url>标签来转换成<rule>所对应的规则。

转自:http://hi.baidu.com/allen_zzw/item/e2d16a539fdf41a2acc857b2

分享到:
评论

相关推荐

    Url Rewrite伪静态组件64位

    **Url Rewrite伪静态组件64位详解** 在网站开发与管理中,为了提高搜索引擎优化(SEO)的效果,提升用户体验,并简化动态网址,许多网站管理员会选择使用伪静态技术。`Url Rewrite伪静态组件`是Microsoft为IIS...

    URLRewrite配置和使用

    outbound-rule是URLRewrite中的一个重要概念,它可以将response.encodeURL或c:url重写后的URL转换成我们想要的格式。例如: ``` &lt;outbound-rule&gt; &lt;from&gt;/rewrite-status &lt;to&gt;/test/status/ &lt;/outbound-rule&gt; ``` ...

    伪静态URLRewrite实例解析

    伪静态URLRewrite技术是实现这一目标的重要手段之一。它主要通过服务器端或应用层面的规则设置,来改变URL的表现形式而不改变其实际的功能性。具体来说: - `&lt;rule&gt;` 是对进入服务器的URL进行重置,即当客户端请求...

    URLRewrite配置和使用[借鉴].pdf

    URLRewrite是一个强大的URL管理工具,常用于Java Web应用程序中,它可以实现URL的重写和美化,提升用户体验,同时也有助于SEO优化。...理解和熟练运用URLRewrite对于提升Web应用的质量和性能至关重要。

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

    2. **部署**:将`.jar`文件添加到项目类路径中,将`urlrewrite.xml`与`web.xml`放在同一目录下。在`web.xml`中,需要配置`&lt;filter&gt;`和`&lt;filter-mapping&gt;`元素来注册Url Rewrite Filter。默认配置是匹配所有URL(`/*`...

    urlrewrite

    1. 规则结构:URLRewrite的规则由一系列元素组成,包括`&lt;rule&gt;`、`&lt;condition&gt;`、`&lt;outbound-rule&gt;`等。每个`&lt;rule&gt;`表示一条重写规则,`&lt;condition&gt;`定义了规则的触发条件,而`&lt;outbound-rule&gt;`则用于处理响应时的...

    urlrewrite地址重写实例配置说明

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

    Spring MVC 配置 urlrewrite 实例

    &lt;filter-class&gt;org.tuckey.web.filters.urlrewrite.UrlRewriteFilter&lt;/filter-class&gt; &lt;filter-mapping&gt; &lt;filter-name&gt;UrlRewriteFilter&lt;/filter-name&gt; &lt;url-pattern&gt;/*&lt;/url-pattern&gt; &lt;dispatcher&gt;REQUEST ...

    urlrewrite示例

    7. **标记和命名空间**:`URLRewrite`配置文件通常会使用特定的标记和命名空间,例如`&lt;rule&gt;`、`&lt;condition&gt;`、`&lt;outbound-rule&gt;`等,理解这些标记的含义和用法对于正确编写规则至关重要。 8. **日志和调试**:为了...

    urlrewritefliter 3.2.0jar包

    - 理解并熟练运用配置文件中的规则语法,如`&lt;rule&gt;`、`&lt;condition&gt;`、`&lt;outbound-rule&gt;`等元素。 - 注意URL重写可能导致的缓存问题,比如浏览器可能缓存了旧的URL,需要正确处理缓存策略。 - 对于大型项目,合理规划...

Global site tag (gtag.js) - Google Analytics