【问题标题】:Url Rewriting Regex - no match网址重写正则表达式 - 不匹配
【发布时间】:2013-01-29 15:30:24
【问题描述】:

我有这个用于 url 重写的正则表达式:

<from>^/page/([0-9]+)/order/(.*)/by/(.*)/composition/(.*)/location/(.*)/price_min/(.*)/price_max/(.*)/industry/(.*)/type/(.*)$</from>
<to>/page=$1&order=$2&by=$3&composition=$4&location_id=$5&price_min=$6&price_max=$7&industry_id=$8&type_id=$9</to>

我想匹配如下 URL,但没有匹配。

/page/2/order/id/by/desc/composition/1/location/none/price_min/2/price_max/2/industry/2/type/3

【问题讨论】:

  • 尝试用非贪婪的.*?替换贪婪的.*

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


【解决方案1】:

考虑使用以下一个:

^/page/([0-9]+)/order/(.+?)/by/(.+?)/composition/(.+?)/location/(.+?)/price_min/(.+?)/price_max/(.+?)/industry/(.+?)/type/(.+?)$

你的正则表达式有两件事:

  1. 您应该使用.+ 而不是.*,因为// 之间总会有数据。
  2. 您应该添加?,这意味着它将是非贪婪的。相当于改写([^/]+),这意味着多次匹配除/ 之外的任何字符

【讨论】:

  • 哦,好的,谢谢你,我现在明白了,我今天晚些时候试试这个
  • 好的,它工作正常,谢谢,我刚刚添加了一个 & 应该是 &
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-05
  • 2021-03-14
  • 2015-05-25
  • 1970-01-01
相关资源
最近更新 更多