【发布时间】:2011-06-21 16:53:21
【问题描述】:
我很难让 URL 重写规则起作用。
我想要这个网址:
http://www.mysite.com/oldpage.aspx?oldid=123
重写为:
http://www.mysite.com/sub/newpage.aspx?newid=123
这是我所拥有的,但它不起作用:
<rule name="Old2New" stopProcessing="true">
<match url="^oldpage.aspx?oldid=([0-9]+)" />
<action type="Rewrite"
url="/sub/newpage.aspx?newid={R:1}"
appendQueryString="true" />
</rule>
我错过了什么?
【问题讨论】:
-
您使用的是什么版本的 ASP.NET? .NET 4 与以前的版本有很大的不同(坦率地说,在以前的版本中,URL 重写很糟糕)。
-
@pearcewg - 实际上,UrlRewrite 是 IIS 的功能/扩展,与您运行的 ASP.NET 版本无关。如果您没有适当的基于 ISAPI 的重写器(例如 ISAPI_Rewrite 或 Iconic Rewriter),我认为您会将其误认为是您必须在 IIS6 上执行的各种任务(通配符映射、httpmodules 等)。
-
我已将问题缩小到问号。如果我通过将 matchURL 更改为“^oldpage.aspx\?oldid=([0-9]+)”来转义它,测试匹配似乎有效,但通过 IIS 的请求不会被重写。
标签: iis iis-7 url-rewriting url-rewrite-module