我的网站/contact.aspx
已成功转发/contact
但我想将旧的/content.aspx?contentid=123
重定向到/about/123
这是我的web.config中的重定向XML部分:
<rewrite>
<rules>
<rule name="contact" patternSyntax="Wildcard" stopProcessing="true">
<match url="contact.aspx" />
<action type="Redirect" url="Contact" redirectType="Found" />
</rule>
<rule name="Content" patternSyntax="Wildcard" stopProcessing="true">
<match url="content.aspx?contentID=*" />
<action type="Redirect" url="About/{R:1}" appendQueryString="false" redirectType="Found" />
</rule>
</rules>
</rewrite>
访问mydomain.com/content.aspx?contentid=123给了我一个404。
也试过没有appendQueryString="false"
似乎很容易解决我,但我错过了一些东西......
使用正则表达式而不是通配符也会给出404:
<rule name="Content">
<match url="content.aspx?contentID=([0-9]+)" />
<action type="Redirect" url="About/{R:1}" redirectType="Found" />
</rule>
答案 0 :(得分:0)
来自IIS rewrite module configuration documentation.
针对模式评估的URL字符串不包含查询字符串。要在规则评估中包含查询字符串,可以在规则条件中使用QUERY_STRING服务器变量。
所以经过大量的测试jiggery-pokery后,我认为这应该有效:
<rule name="Content" patternSyntax="ECMAScript" stopProcessing="true">
<match url="content.aspx" />
<conditions>
<add input="{QUERY_STRING}" pattern="contentID=([^&]+)" />
</conditions>
<action type="Redirect" url="About/{C:1}" redirectType="Found" appendQueryString="False" />
</rule>