我无法触发我的 URL 重写规则。
我的 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}&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}&pxid={R:2}&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 参数时,它确实有效:
使用这个重写规则:
<rule name="email no url">
<match url="^emailclick/([a-z0-9-]+)$"/>
<action type="Rewrite" url="emailclick.aspx?pxid={R:1}"/>
</rule>