真奇怪的问题。这是我想要使用的正则表达式:
<match url="^c/([^/]*)/([^/]*)/([^/]*)/[?]((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&amp;=\+\$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&amp;=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&amp;;%@.\w_]*)#?(?:[\w]*))?)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
<action type="Rewrite" url="/c/?campaignid={R:1}&listid={R:2}&emailid={R:3}&forward={R:4}" appendQueryString="false" />
</rule>
将被这样调用:
http://mydomain/c/1/1/1/?http://redirecturl
但是使用上面的正则表达式,CakePHP抱怨广告系列/列表/电子邮件都是空白的。这是“奇怪的”,下面的作品,传递我想要的值:
^c/([^/]*)/([^/]*)/([^/]*)
它传递广告系列/列表/电子邮件ID值。但是,当我为URL添加正则表达式时,它们都被清空了!?!
IIS正则表达式测试程序中的“测试”表明它是有效的正则表达式。