【发布时间】:2018-07-25 12:49:48
【问题描述】:
我们有一个在 IIS 的虚拟文件夹中运行的应用程序。我们不希望虚拟文件夹名称成为我们链接的一部分(主要是出于 SEO 原因保留原始链接名称)。
以下是我们正在使用的重写规则的一个示例:
<rule name="Rewrite Account controller to UI">
<match url="/Account(.*)"/>
<action type="Rewrite" url="ui/Account{R:1}"/>
<conditions>
<add input="{URL}" pattern="\.axd$" negate="true" ignoreCase="true"/>
</conditions>
</rule>
这个规则的问题是它还会匹配“~/someothercontroller/258642/Accounting-Essentials”并将其变成“/ui/Accounting-Essentials”。而且我不想包含主机,因为主机在每个环境中都不同。
只有当表达式是主机之后的第一件事时,这需要看起来像什么?
编辑: 对不起,我想我的帖子没有我想象的那么清楚。一个例子是http://x/Account。这应该重写为http://x/ui/Account。 x 可以是带有任意数量句点的任何主机名,但它只是主机名,因此它不会包含任何斜杠。
您可以在我上面的规则中看到,我希望它包含 Account 之后的任何内容,但我意识到这也不完全正确,因为它不应该匹配“http://x/Accounting”,但它应该匹配“@987654324” @"。
【问题讨论】:
-
你能举一个你想重写的完整 URL 的例子吗?
-
@Marathon55 请看编辑
标签: regex iis url-rewrite-module