URLRewriteFilter为一个更好的URL重写params

时间:2013-12-14 15:49:39

标签: regex url-rewriting jboss7.x tuckey-urlrewrite-filter

我尝试了几种不同的选项来重写网址,但我似乎失败了,我不确定是不是因为我要做的事情更复杂或更不...

我目前在我的应用中使用此功能,调用其中任何一个网址,我可以访问我的网页:

http://localhost:8080/myapp/template.jsp?site=mysite1&lng=en&pageToLoad=welcome

这也可能是(注意m - )

http://localhost:8080/myapp/m-template.jsp?site=mysite1&lng=en&pageToLoad=welcome

但是,我想重新编写我的网址,如下所示:

http://localhost:8080/myapp/mysite1/en/welcome
http://localhost:8080/myapp/m/mysite1/en/welcome

我尝试过使用JBoss:

org.jboss.web.rewrite.RewriteValve

现在我正在尝试:

org.tuckey.web.filters.urlrewrite.UrlRewriteFilter

但我无法弄清楚我的规则是如何编写的,以便我可以进行此更改,任何建议都会非常感激。

1 个答案:

答案 0 :(得分:0)

哇,差不多花了一整天,但我终于明白了。可能有一种方法可以改进,但这是我的工作,我不会自己调整它,直到它致力于git :))

<rule>
    <from>^([/m])([a-z]*)/(en|it)/([a-z]*)(?!.)</from>
    <to>/template.jsp?site=$2&amp;lng=$3&amp;pageToLoad=$4</to>
</rule>

<rule>
    <from>m/([a-z]*)/(en|it)/([a-z]*)(?!.)</from>
    <to>/m-template.jsp?site=$1&amp;lng=$2&amp;pageToLoad=$3</to>
</rule>


<outbound-rule>
    <from>([^\r]*)/template\.jsp\?site=([a-z]*)&amp;lng=(en|it)&amp;pageToLoad=([a-z]*)</from>
    <to>%{context-path}/$2/$3/$4</to>
</outbound-rule>

<outbound-rule>
    <from>([^\r]*)/m-template\.jsp\?site=([a-z]*)&amp;lng=(en|it)&amp;pageToLoad=([a-z]*)</from>
    <to>%{context-path}/m/$2/$3/$4</to>
</outbound-rule>

希望这对别人有所帮助。

干杯。