我们曾经使用ISAPI重写(事实上它仍然在我们的服务器上)虽然它不能与ASP.Net MVC一起使用(与'euxd'得到参数有关)。
当我们更改网站结构,上传新网站等时,我们需要一种可靠的方式来实施简单的301重定向。有什么建议吗?
好的,我想将/SomeFolder/SomePage.HTML?Param1=X重定向到/ NewPage / X
我们怎么能这样做?
答案 0 :(得分:37)
在MVC 3中,有三种新的重定向方法可以在控制器中用于永久重定向(产生301);而不是MVC 2重定向产生的302s(临时重定向)。
public ActionResult OldAction() { return RedirectPermanent(urlname); }
PluralSight的这些演练的Controllers部分有一个很棒的教程。
答案 1 :(得分:3)
如果您使用的是IIS7,我建议您使用官方IIS7 URL Rewrite module。
答案 2 :(得分:2)
要执行从非MVC 页面到MVC控制器操作的重定向,最好的办法是使用像UrlRewriting.net或类似的库,它使用HttpModule来处理每个请求和将其发送到特定地点。
示例:将'/faq.asp'的请求重定向到'/ faq':
<add name="faq.asp" virtualUrl="^~/faq.asp([\?#].*)?$"
destinationUrl="~/faq"
redirect="Application"
redirectMode="Permanent"
ignoreCase="true" />
当你向你的Web.config添加为UrlRewriting.Net提供支持的HttpModule时,请确保在之前定义它由ASP.NET自动定义的UrlRoutingModule。否则,ASP.NET将尝试通过将您的请求映射到文件或控制器来处理您的请求,因此您可能会遇到一些意外问题。
<modules runAllManagedModulesForAllRequests="true">
<add name="UrlRewriteModule" type="UrlRewritingNet.Web.UrlRewriteModule, UrlRewritingNet.UrlRewriter"/>
<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</modules>
答案 3 :(得分:1)
我只是blogged关于使用ASP.NET MVC和XML文件存储301重定向映射的简单解决方案。
然而,根据Nathan Taylor的回答,如果您需要进行基于Regex的映射,我建议使用UrlRewriting.Net。
答案 4 :(得分:0)
实施自定义ActionResult。示例:http://www.stum.de/2008/10/22/permanentredirectresult/