我是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&title=$1</to>
</rule>
我是如何在UrlreWriterFilter中实现这一点的,因为URL是动态生成的,尽管遵循相同的模式?
答案 0 :(得分:1)
您的规则定义中存在错误,应该以{{1}}开头,如下所示。
/
<urlrewrite>
<rule>
<from>^/read-post/([0-9a-zA-Z]+)</from>
<to>/read-post.jsp?id=$1&title=$1</to>
</rule>
</urlrewrite>
在您的上下文后开始处理,因此在开头使用UrlRewriterFilter
意味着在您的上下文之后。
当您使用此规则时,对/
的任何请求都将转发至read-post.jsp?id=1&title=Some-blog-post-title
read-post.jsp
和id=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&title=$2</to>
</rule>
</urlrewrite>
网址中会有read-post/1/Some-Blog-Title
。