我是 Tomcat URL 缩短的新手。我已经为我的 Web 应用程序安装了 UrlRewriterFilter
,但不太了解如何实现新规则。
我在博客索引页上有一个链接,链接到一篇单独的博客文章。
例如:read-post.jsp?id=1&title=Some-blog-post-title
。
我希望将 URL 更改为 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>
鉴于 URL 是动态生成的,但遵循相同的模式,我如何在 UrlreWriterFilter 中实现这一点?
最佳答案
您的规则定义有误,它应该以 /
开头,如下所示。
<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
才能找到发布,那么你应该像下面一样在 url 中包含 id
。
<urlrewrite>
<rule>
<from>^/read-post/([0-9]+)/([0-9a-zA-Z]+)</from>
<to>/read-post.jsp?id=$1&title=$2</to>
</rule>
</urlrewrite>
因此,您可以使用这种格式的 URL read-post/1/Some-Blog-Title
url 中会有一个 id
。
关于java - 如何在 Tomcat 7 上使用 UrlRewriteFilter 缩短/清理 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23844561/