【问题标题】:Need help in URL Rewrite using Tuckey URL Rewrite in Struts在 Struts 中使用 Tuckey URL Rewrite 在 URL Rewrite 方面需要帮助
【发布时间】:2018-12-02 05:15:29
【问题描述】:

我正在使用 struts2 框架和 mongoDB 数据库。现在我有了这个网址:

http://localhost:8084/testURL/pages.jsp?pid=5b2d12a67f7eef1094c6a6de

我想显示这个网址

http://localhost:8084/testURL/pages/5b2d12a67f7eef1094c6a6de.

我正在使用 tukey 进行 url 重写。以下是我的 urlrewrite.xml。返回 404 未找到

<urlrewrite>
<rule>
    <from>^/pages.jsp?pid=$1</from>
    <to>/pages/$</to>
</rule>
</urlrewrite>

【问题讨论】:

  • 我的回答对您有帮助吗?如果不是,那是怎么回事?

标签: java jsp url jakarta-ee url-rewriting


【解决方案1】:

免责声明:写作作为假设是为了解决问题并且由于评论的长度而作为答案

正则表达式锚

在正则表达式中,^ and $ are reserved character to say begin and end。我假设您在 URL 重写规则中使用标准正则表达式匹配 (1)

正则表达式捕获

您可能需要capture 参数,然后在to 参数中重新使用它:

<urlrewrite>
  <rule>
    <from>^\/pages\.jsp\?pid=(.*)$</from>
    <to>/pages/$1</to>
  </rule>
</urlrewrite>

所有反斜杠,因为您需要转义特殊字符:斜杠/、点. 和问号?

在 (.*) 中使用点有点过分,请随意微调正则表达式。下面的例子

如果您确定您的 PID 始终由字母数字小写字符组成,您可以使用

<urlrewrite>
  <rule>
    <from>^\/pages\.jsp\?pid=([a-z0-9]*)$</from>
    <to>/pages/$1</to>
  </rule>
</urlrewrite>

您可以在这里测试您的正则表达式:https://regex101.com/

注意

在 Tuckey docs(1) 中,提到您的情况与 &lt;outbound-rule&gt; 一起使用。我还没有把 Tucket 推到那么远,所以我不知道在你的场景中使用 &lt;rule&gt; 是否足够:

<outbound-rule>
    <from>^/world.jsp?country=([a-z]+)&amp;city=([a-z]+)$</from>
    <to>/world/$1/$2</to>
</outbound-rule>

1:Tuckey 文档:http://tuckey.org/urlrewrite/manual/3.0/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-06
    • 2014-09-26
    • 2011-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多