Tomcat 6 URL Rewrite将所有出现的字符转换为另一个字符

时间:2014-06-02 13:19:45

标签: tomcat url-rewriting

我需要使用Tomcat 6将http://www.example.com/foo/bar/moo的请求重写为http://www.example.com/foo@bar@moo

原因是,应用程序JIRA将多个包含的javascripts批处理到一个batch.js中,并且不允许使用子路径。但javascripts本身动态地从这些子路径加载资源。我不想改变这些javascripts,所以我可以在必要时轻松升级javascripts。

无法禁用批处理,因此我希望将请求转换为具有/替换为不同分隔符的请求(这些URL不会自然地出现在这些URL中)。 在JIRA中,我已经将资源重命名(映射)为新名称。

现在对于tomcat我想到了urlrewrite

之类的东西
<urlrewrite>
  <rule enabled="true">
    <condition type="request-uri" operator="equal">^/foo/.*</condition>
    <from>/</from>
    <to type="permanent-redirect">...</to>
  </rule>
<urlrewrite>

但是如果可能的话,不知道如何指定<to/>。 如果不能这样做,我还有其他可能性吗?

1 个答案:

答案 0 :(得分:0)

假设只有有限数量n的可能斜杠,解决方法是将规则乘以n次。

<rule enabled="true"> 
    <condition type="request-url" operator="equal">/(jira)/(dojo|dojox|dijit)/([^/]+)$</condition> 
    <from>^/(dojo|dojox|dijit)/([^/]+)$</from> 
    <to type="redirect">/%1/%2@%3</to> 
</rule> 

<rule enabled="true"> 
    <condition type="request-url" operator="equal">/(jira)/(dojo|dojox|dijit)/([^/]+)/([^/]+)$</condition> 
    <from>^/(dojo|dojox|dijit)/([^/]+)/([^/]+)$</from> 
    <to type="redirect">/%1/%2@%3@%4</to> 
</rule> 

P.S。:原始问题实际上不是问题,因为所有重定向都必须使用batch.js,因此您只需要1条规则来解决JIRA问题。