Urlrewrite配置不当造成死循环问题解析

OECP社区中需要对博客标签进行url重写,把类似“/blogs/tag/tagIndex?key=业务组件”的url转成“/blogs/tag/业务组件”(其中粗体的是标签关键字),但是配置完后点击链接时后台总是循环报错。 

博客标签urlrewrite规则
  1. <rule>  
  2.         <note>博客标签</note>  
  3.         <from>^/blogs/tag/(.*)/$</from>  
  4.         <to>/blogs/tag/tagIndex/?key=$1</to>  
  5.     </rule>  
  6.     <outbound-rule>  
  7.         <note>博客标签反向url</note>  
  8.         <from>/blogs/tag/tagIndex/?key=(.*)$</from>  
  9.         <to>/blogs/tag/$1/</to>  
  10.     </outbound-rule>  

 看上去没什么问题。反向url解析也是正常的。但是点击链接时总是在循环报错。
通过跟踪后发现链接请求是先通过urlrewrite过滤器,将请求的链接/blog/tag/业务组件与规则匹配后转换成/blog/tag/tagIndex?key=业务组件。然后使用新链接地址通过Request的forward进行跳转,又经过urlrewrite过滤器时问题出现了,本应该直接跳转的链接/blog/tag/tagIndex?key=业务组件又与规则^/blogs/tag/(.*)$ 匹配。过滤器代码中形成了死循环链接被不断的重写,直至无法解析报错。

找出问题原因后修改就简单了。由于解析后的链接都包含tagIndex?key=开头,只要排除以tagIndex?key=的tag关键字就了。稍加改动后就变成如下。

博客标签urlrewrite规则
  1. <rule>  
  2.         <note>博客标签</note>  
  3.         <from>^/blogs/tag/([^tagIndex/?key=].*)/$</from>  
  4.         <to>/blogs/tag/tagIndex/?key=$1</to>  
  5.     </rule>  
  6.     <outbound-rule>  

更新后问题解决。

 

本文转自http://po-soft.com/hi/wlo_o/blog/1966。转载请注明出处。

更多内容请访问OECP社区

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值