什么是在asp.net中301重定向更推荐的方法?

时间:2012-01-07 19:54:06

标签: asp.net redirect http-status-code-301 visual-web-developer-2010

我已经搜索了所有内容,并且我已经阅读了大量不同的回复 - 有些我试图暗示没有成功。我不是一个专业的程序员,但我感谢这个论坛的人们教我很多东西,从jquery到doctypes,到你的名字!

我有一个在VWD 2010 Express中开发的网站。我只想知道两件事:

  1. 我知道搜索引擎/重复内容对你的域名和www.yourdomain都不好,所以我想设置301重定向,这样如果最终用户输入mydomain,它们会自动重定向到www.mydomain(用www)。

  2. 我移动了一些不在根目录中但在文件夹中的页面。所以我想用新的位置替换过时的页面。我想通过自动将它们从www.mydomain / 服务 /engineering.aspx重定向到www.mydomain / 产品 /engineering.aspx来实现这一目的。

  3. 这难吗?是(推荐)使用.htaccess,web.config还是别的什么?

    感谢您抽出宝贵时间阅读本文,我衷心感谢所有反馈。

    杰森韦伯

3 个答案:

答案 0 :(得分:7)

除非我误解了.htacess是针对Apache的,如果你在ASP.Net编码,你几乎肯定会使用IIS。所以在你的研究中igonore .htaccess的东西。

您可以使用某种URL重写器进行重定向,但这可能会变得非常复杂。如果我是你,我会保持尽可能简单,并在Page_Load事件中重新发送您的旧页301重新定向,即

protected void Page_Load(object sender, System.EventArgs e)
{
   Response.Status = "301 Moved Permanently";
   Response.AddHeader("Location","http://www.domainname.com/new-page.aspx");
}

对于规范重定向(非www到www),您可以在Application_BeginRequest中的Global.asax文件中执行类似操作,以检测非www变体,即。

if (HttpContext.Current.Request.Url.ToString().ToLower().Contains( 
    "http://mysite.com")) 
{ 
    HttpContext.Current.Response.Status = "301 Moved Permanently"; 
    HttpContext.Current.Response.AddHeader("Location", 
        Request.Url.ToString().ToLower().Replace( 
            "http://mysite.com", 
            "http://www.mysite.com")); 
} 

(这不是我的代码来自here

这就是我要做的事情 - 它具有易于理解的优点,让您不受任何奇怪的Web服务器配置的限制,我有时会发现它有点像黑盒子。

答案 1 :(得分:6)

由于您使用的是VWD 2010 Express,因此您可以使用.NET4方法Response.RedirectPermanent(stringURL)。它是HttpResponse对象的一部分。

此处提供更多文档: http://msdn.microsoft.com/en-us/library/system.web.httpresponse.redirectpermanent.aspx

此功能与Response.Redirect()相同,但它会向客户端发出301代码并执行重定向。

答案 2 :(得分:-1)

在想要重定向超过301

的位置执行此操作
string url = "newpage.aspx";
        Response.Clear();
        Response.StatusCode = 301;
        Response.RedirectLocation = url.ToLower();
        Response.End();

然后使用Chrome中的检查工具并检查“网络”标签以查看状态代码。 它对我有用。

相关问题