我正在尝试为IIS创建URL重写入站规则,以便在特定参数之前返回URL。
编辑:我应该声明authProvider始终是最后一个参数。
示例:
http://localhost/WebAccess/Default.ashx?accessionNumber=009&authProvider=Bypass
我想从网址末尾删除& authProvider = Bypass
我试过了:
.*(?=&authProvider)
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Test" enabled="true">
<match url="(.*)&authProvider.+" />
<action type="Rewrite" url="{R:0}" logRewrittenUrl="true" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
答案 0 :(得分:1)
您显示的示例将与您想要的匹配,但不会更改URL。匹配的结果应该包含您想要的匹配字符串作为结果。
我认为问题可能在于您尝试替换匹配的内容,但是由于正向查找(?=
不是匹配结果的一部分)当您执行替换时,您最终会遇到你开始时的字符串相同。作为替代方案,假设您知道如果参数顺序发生变化,这将不会非常强大,您可以使用:
(.*)&authProvider.+
然后用
替换$1
这将导致:
http://localhost/WebAccess/Default.ashx?accessionNumber=009
基本上它匹配整个字符串并将其替换为$ auth之前的所有内容,它位于组1($1
)中。
<强>更新强>
通过更新,我发现重写规则语法使用{R:1},因此在我的示例中$ 1应该是{R:1},而在Rewrite Rule中应该是{R:1}。有关示例,请参阅here。