我想在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>
答案 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