Umbraco UrlRewrite - 相同的页面,不同的查询字符串参数

时间:2014-05-28 08:50:38

标签: url-rewriting umbraco

寻找一些帮助,为具有不同查询字符串参数的同一页面设置al UrlRewrite。

以下是我要重写的两个网址

stockists.aspx?product=1&fragrance=2
stockists.aspx?store=1

我首先为 stockists.aspx?product = 1& fragrance = 2 (在config / UrlRewriting.config中)设置了网址重写并成功测试。

<add name="Stockists"
  virtualUrl="^~/stockists/(.*)/(.*).aspx"
  rewriteUrlParameter="ExcludeFromClientQueryString"
  destinationUrl="~/stockists.aspx?product=$1&amp;fragrance=$2"
  ignoreCase="true" />

然后我为 stockists.aspx?store = 1 (在config / UrlRewriting.config中)设置了url重写,现在这两个url都没有重写。

<add name="Stores"
  virtualUrl="^~/stockists/(.*).aspx"
  rewriteUrlParameter="ExcludeFromClientQueryString"
  destinationUrl="~/stockists.aspx?store=$1"
  ignoreCase="true" />

有关如何实现上述目标的任何建议?

1 个答案:

答案 0 :(得分:1)

就像现在一样,Stores重写也会匹配Stockists重写匹配的url格式。 (.*)匹配任意数量的任何字符。要解决此问题,应将每个(.*)更改为([^/]+)。这将匹配除正斜杠之外的任何字符,并确保至少有一个字符。

<add name="Stockists"
  virtualUrl="^~/stockists/([^/]+)/([^/]+).aspx"
  rewriteUrlParameter="ExcludeFromClientQueryString"
  destinationUrl="~/stockists.aspx?product=$1&amp;fragrance=$2"
  ignoreCase="true" />

<add name="Stores"
  virtualUrl="^~/stockists/([^/]+).aspx"
  rewriteUrlParameter="ExcludeFromClientQueryString"
  destinationUrl="~/stockists.aspx?store=$1"
  ignoreCase="true" />

现在,这可能无法完全解决问题,但它应该允许Stockists重写再次工作。我怀疑Stores重写还有其他问题,但Stockists重写停止了工作,因为url模式与Stores重写相匹配。