我正在使用新的MVC应用程序替换旧的ASP.NET webforms应用程序.但是,我有一个问题,用户有一个特定页面的旧链接,我想自动转换为正确的MVC路由.
旧址:http://mysite.com/ticketsdetail.aspx?id=12345
新网站:http://mysite.com/tickets/details/12345
在MVC路由中是否有一种方法可以捕获旧URL并将其转换为新URL?
编辑:
好的,使用IIS7 URL重写执行此操作的web.config条目是:
<rewrite>
<rules>
<rule name="Ticket page redirect" stopProcessing="true">
<match url="ticketsdetail.aspx$" />
<conditions>
<add input="{QUERY_STRING}" pattern="id=(\d*)$" />
</conditions>
<action type="Redirect" url="Calls/Tickets/{C:1}" appendQueryString="false" redirectType="Temporary" />
</rule>
</rules>
</rewrite>
最佳答案 不要在代码中这样做是我的建议,除非你绝对需要. Scott Hanselman有一篇很好的文章介绍了如何使用IIS Url Rewrite在web.conf中完成所需的操作.
这也是你的web.config中的规则:
<rule name="RewriteUserFriendlyURL1" stopProcessing="true">
<match url="^ticket/details/([^/]+)/?$" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="ticketdetails.aspx?id={R:1}" />
</rule>