web.config 中的重写规则未触发,但匹配正则表达式101

问题描述 投票:0回答:0

我无法触发我的 URL 重写规则。

我正在测试的网址:https://www.example.com/emailclick/d16f5a8d-e15c-40a1-9935-addf37dc139b/https%3a%2f%2fwww.example.com%2ftest%2fnyc%2f17690167%2fflowerstreet %2fapartment-flowerstreet-nyc%3futm_source%3dnewsletter%26utm_medium%3demail%26utm_campaign%3dmailing%26utm_term%3dsingleobject

我的 web.config 触发器中没有这些规则。我将它们移到了

<rules>
部分的顶部,所以我确定没有其他规则首先被触发。

web.config

  <rule name="emailclick">
      <match url="^emailclick/([a-z0-9-]+)/(https%3a%2f%2fwww\.(example\.com|example2\.com)[a-z0-9-%_.]+)$"/>
      <action type="Rewrite" url="emailclick.aspx?pxid={R:1}&amp;url={R:2}"/>
  </rule>

  <rule name="emailclick2">
      <match url="^emailclick\/([a-z0-9-]+)\/(https%3a%2f%2fwww\.(example\.com|example2\.com)[a-z0-9-%_.]+)$"/>
      <action type="Rewrite" url="emailclick.aspx?pxid={R:1}&amp;pxid={R:2}&amp;url={R:2}"/>
  </rule>

我尝试启用失败的请求跟踪,但我的机器有一些限制,而且我不认为它给我新的见解,因为我的重写规则实际上是

rules
部分中的第一条规则。所以请不要回答失败的请求跟踪。

我试过在这里测试:https://regex101.com/r/n3NVaQ/1 那里的规则工作正常。

更新 1

我还试图查看正则表达式的哪一部分失败,当我将规则更改为:

<rule name="email no url">
  <match url="^emailclick/([a-z0-9-]+)$"/>
  <action type="Rewrite" url="emailclick.aspx?pxid={R:1}"/>
</rule>

我使用 URL https://www.example.com/emailclick/d16f5a8d-e15c-40a1-9935-addf37dc139b,重写规则被触发。所以第二部分有问题,我的重写规则的

url
参数部分,但是什么?

更新 2

奇怪!当我明确定义了 url 参数时,它确实有效:

https://www.example.com/emailclick/d16f5a8d-e15c-40a1-9935-addf37dc139b?url-https%3a%2f%2fwww.example.com%2ftest%2fnyc%2f17690167%2fflowerstreet%2fapartment-flowerstreet- nyc%3futm_source%3dnewsletter%26utm_medium%3demail%26utm_campaign%3dmailing%26utm_term%3dsingleobject

使用这个重写规则:

  <rule name="email no url">
      <match url="^emailclick/([a-z0-9-]+)$"/>
      <action type="Rewrite" url="emailclick.aspx?pxid={R:1}"/>
  </rule>
web-config url-rewrite-module
© www.soinside.com 2019 - 2024. All rights reserved.