【问题标题】:Umbraco UrlRewrite - same page, different querystring parametersUmbraco UrlRewrite - 同一页面,不同的查询字符串参数
【发布时间】:2014-05-28 08:50:37
【问题描述】:

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

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

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

我首先为 stockists.aspx?product=1&fragrance=2 设置了 url 重写(在 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 设置 url 重写(在 config/UrlRewriting.config 中),现在 url 重写都不起作用。

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

关于如何实现上述目标有什么建议吗?

【问题讨论】:

    标签: url-rewriting umbraco


    【解决方案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 重写匹配。

    【讨论】:

      猜你喜欢
      • 2015-10-10
      • 2012-09-01
      • 1970-01-01
      • 2017-06-21
      • 1970-01-01
      • 2014-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多