第一个重写规则(下面),“重写为可读URL”,效果很好。第二条规则“删除WWW前缀”,从URL中删除WWW前缀,因此:
http://www.mydomain.com/blog...
成为这个:
http://mydomain.com/blob...
现在这造成了一点点破坏。虽然文章加载正常,但如果规则必须工作,例如WWW存在,那么浏览器地址栏中的URL不幸会变回不可读的版本,如下所示:
http://mydomain.com/blog/article.asp?id=1&title=blog-title
但重写已经奏效,WWW已被删除。但为什么它从友好的URL变为非友好的URL?任何人都可以发现我的错误或建议如何纠正这个问题吗?
这是我的web.config文件的一部分:
<rules>
<rule name="Rewrite to readable URL">
<match url="^blog/([0-9]+)/([_0-9a-z-]+)" />
<action type="Rewrite" url="blog/article.asp?id={R:1}&title={R:2}" />
</rule>
<rule name="Remove WWW prefix" >
<match url="(.*)" ignoreCase="true" />
<conditions>
<add input="{HTTP_HOST}" pattern="^www\.mydomain\.com" />
</conditions>
<action type="Redirect" url="https://mydomain.com/{R:1}" redirectType="Permanent" />
</rule>
</rules>
答案 0 :(得分:1)
您似乎将重写过程的结果提供给重定向。尝试更改两个规则的顺序。
要获得更多控制权,您还可以将stopProcessing =“true”添加到规则标记。
在您的情况下,重写和重定向应该是完全独立的过程。