web.config中的IIS URL重定向规则

时间:2016-09-16 13:08:15

标签: iis url-redirection

我想在web.config中为重定向编写规则。

我想重定向网址,如...

http://www.example.net/profile/username

为...

http://www.example.net/#/profile/username

我添加了以下版本,但它似乎无法正常工作。这样做的最佳方式是什么?

  <rule name="Redirect to hashed profile" stopProcessing="true">
            <match url="(.*)" />
            <conditions>
                <add input="{HTTP_HOST}{REQUEST_URI}" pattern="on" ignoreCase="true" pattern="^.net/profile/*"/>
            </conditions>
            <action type="Redirect" url="https://{HTTP_HOST}/#/{REQUEST_URI}" redirectType="Permanent" appendQueryString="true" />
        </rule>

1 个答案:

答案 0 :(得分:1)

这里有什么,以及你如何解决它。

pattern="^.net/profile/*"

^将文字固定在您的HTTP_HOST的开头www.example.com所以^.net表示您的网址必须以任意1个字符.开头,然后是{ {1}}。我会假设您想要匹配文字net,为了做到这一点,您必须将其作为.

转义

您还必须将\.转义为/,并且在斜杠末尾也\/只是意味着匹配无限制的斜杠,但您希望它匹配斜杠后的任何字符无限次,所以*

因此,我们不能使用.*重写该模式,因为您的网站不是以^开头的

.net

那会给你这个..

pattern="\.net\/profile\/.*"

但你真的需要{HTTP_HOST}吗?这实际上取决于这是一个全球规则,如果它不是一个全局规则,它在应用程序级别。那你就不需要了。

现在,您可以在 <add input="{HTTP_HOST}{REQUEST_URI}" pattern="on" ignoreCase="true" pattern="\.net\/profile\/.*"> 中添加回来,将单词^锚定到REQUEST_URI的第一部分,就像这样。

profile