java - 如何在 Tomcat 7 上使用 UrlRewriteFilter 缩短/清理 URL

标签 java url tomcat url-rewriting

我是 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&amp;title=$1</to>
</rule>

鉴于 URL 是动态生成的,但遵循相同的模式,我如何在 UrlreWriterFilter 中实现这一点?

最佳答案

您的规则定义有误,它应该以 / 开头,如下所示。

<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-titletitle=Some-blog-post-titleid 在这里没用,如果您的 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&amp;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/

相关文章:

javascript - 从 url 变量填充输入字段 - 使用 javascript 或 jquery

http - tomcat:org.apache.coyote.http11.Http11Processor.service解析HTTP请求 header 时出错

Java EE Servlet eclipse tomcat HTTP Error 500 Servlet执行抛出异常

java - 我正在使用 Eclipse IDE。 jsp 代码执行但 servlet 返回空白页

Java 虚拟机缺少 Aptana Studio

Java 泛型 - 从 T 到 T 的类型不匹配

java - Jetty 6 - 虚拟主机

java - 旅游网站背后的算法

apache - mod_rewrite 如果使用域 X 则重定向到特定 URL?

Java - BufferedReader 不从 url 读取