如何在Tomcat 7上使用UrlRewriteFilter缩短/清除URL

时间:2014-05-24 11:39:05

标签: java url tomcat url-rewriting

我是Tomcat URL缩短的新手。我已为我的网络应用安装了UrlRewriterFilter,但无法理解如何实施新规则。

我在链接到个别博客帖子的博客索引页面上有一个链接。

例如:read-post.jsp?id=1&title=Some-blog-post-title

我希望将网址更改为read-post/some-blog-post-title

这是我尝试过的不起作用的地方:

<rule>
        <from>^read-post/([0-9a-zA-Z]+)</from>
        <to>read-post.jsp?id=$1&amp;title=$1</to>
</rule>

我是如何在UrlreWriterFilter中实现这一点的,因为URL是动态生成的,尽管遵循相同的模式?

1 个答案:

答案 0 :(得分:1)

您的规则定义中存在错误,应该以{{1​​}}开头,如下所示。

/

<urlrewrite> <rule> <from>^/read-post/([0-9a-zA-Z]+)</from> <to>/read-post.jsp?id=$1&amp;title=$1</to> </rule> </urlrewrite> 在您的上下文后开始处理,因此在开头使用UrlRewriterFilter意味着在您的上下文之后。

当您使用此规则时,对/的任何请求都将转发至read-post.jsp?id=1&title=Some-blog-post-title read-post.jspid=Some-blog-post-title,但title=Some-blog-post-title在此处无效,如果您的id页面可以找到只有标题的帖子,但是如果read-post.jsp需要read-post.jsp来查找帖子,那么您应该在网址中加入id,如下所示。

id

因此,您可以使用此格式的网址 <urlrewrite> <rule> <from>^/read-post/([0-9]+)/([0-9a-zA-Z]+)</from> <to>/read-post.jsp?id=$1&amp;title=$2</to> </rule> </urlrewrite> 网址中会有read-post/1/Some-Blog-Title