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

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

 

下面是我配置的重写规则

 

<rule>  
        <note>博客标签</note>  
        <from>^/blogs/tag/(.*)/$</from>  
        <to>/blogs/tag/tagIndex\?key=$1</to>  
</rule>  
<outbound-rule>  
        <note>博客标签反向url</note>  
        <from>/blogs/tag/tagIndex\?key=(.*)$</from>  
        <to>/blogs/tag/$1/</to>  
</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规则

<rule>  
       <note>博客标签</note>  
       <from>^/blogs/tag/([^tagIndex\?key=].*)/$</from>  
       <to>/blogs/tag/tagIndex\?key=$1</to>  
</rule>  

 添加上[^tagIndex\?key=]后重启服务器问题解决。

 

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

更多内容请访问OECP社区

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值