【问题标题】:Getting the query string when using Tuckey URL Rewrite使用 Tuckey URL Rewrite 时获取查询字符串
【发布时间】:2012-02-20 19:30:16
【问题描述】:

我有以下规则:

<rule>
     <from>^/users/(.*)$</from>
     <to last="true">/users.do$1</to>
</rule>

我想匹配以下网址:

http://localhost:8077/users/?elemsPerPage=10

并将其重定向到:

http://localhost:8077/users.do?elemsPerPage=10

问题是当 url 重写引擎找到“?” url 中的字符它不会在 $1 匹配参数中返回任何其他内容。它也不会将参数添加到查询字符串中。有什么想法吗?

【问题讨论】:

  • 通常这是通过在规则中添加一个 qsa (query-string-append) 来完成的,不幸的是,这似乎不受支持。也许添加 %{QUERY_STRING} 会有所帮助?但这没有经过测试。
  • 感谢您的洞察力,我发现有一种方法可以使用变量来实现这一点。对于查询字符串,好的一个是 %{query-string}

标签: java regex url-rewriting urlrewriter tuckey-urlrewrite-filter


【解决方案1】:

我终于找到了解决这个问题的方法:

规则:

<rule>
     <from>^/users/$</from>
     <to last="true">/users.do?%{query-string}</to>
</rule>

【讨论】:

  • 正是我所需要的。
【解决方案2】:

有更好的办法,试试在urlrewrite中加上use-query-string="true"

<urlrewrite use-query-string="true">

【讨论】:

  • 这是更合适的解决方案。
  • 这可能很明显,但此解决方案假定您希望所有重写都使用此功能。
  • tkane2000 在这里提出了正确的观点。两者都是很好的解决方案,取决于您的需求。我有大约 200 多个重写要管理,我不打算将 use-query-string 全局应用到它们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-01
  • 2018-09-04
  • 1970-01-01
  • 2011-02-08
  • 2018-12-02
  • 1970-01-01
相关资源
最近更新 更多