SEO和重定向

时间:2018-01-27 17:29:28

标签: c# asp.net redirect

我有以下代码将我网站的“非www”版本的所有请求重定向到“www”版本,重定向正在运行。我已相应更新了Google网站站长工具中的设置。我从existing SO question获得了此代码。

void Application_BeginRequest(object sender, EventArgs e)
{
    if (Request.Url.Authority.StartsWith("www"))
        return;

    var url = string.Format("{0}://www.{1}{2}",
        Request.Url.Scheme,
        Request.Url.Authority,
        Request.Url.PathAndQuery);

        Response.RedirectPermanent(url, true);
}

如何更改此代码以满足从“www”到“非www”版本的需求?令我困惑的是,所有网站都以“http://”开头。其次,如果我将网站迁移到“https://”,我该怎么做?规范链接是否会解决这个问题,还是我必须再次更改上面的代码?

1 个答案:

答案 0 :(得分:1)

  

我如何更改此代码以迎合来自" www"到"非www"版本

void Application_BeginRequest(object sender, EventArgs e)
{
    if (!Request.Url.Authority.StartsWith("www"))
        return;

    var url = string.Format("{0}://{1}{2}",
        Request.Url.Scheme,
        Request.Url.Authority,
        Request.Url.PathAndQuery);

        Response.RedirectPermanent(url, true);
}
  

其次,如果我将网站迁移到" https://&#34 ;?,我将如何执行此操作?规范链接是否会解决这个问题,还是我必须再次更改上面的代码?

Request.Url.Scheme(即httphttps)正在从当前请求传递,因此无法处理该详细信息。

MVC有RequireHttps attribute可以注册为全局过滤器来处理该重定向。或者,如果不能满足您的需求,您可以make a custom one

Canonical tag适用于多个网址上有重复内容的情况。 301重定向避免了这种情况,因此在这种情况下不需要。

  

注意:

     

大多数浏览器都会缓存301重定向。因此,如果您在没有向响应添加no-cache标头的情况下进行此设置,则任何已达到当前配置的浏览器都将忽略新配置。从本质上讲,除非你找到某种方法来缓存这种情况,否则这些不幸的用户将处于无限重定向循环中。

     所有浏览器都不支持301重定向(尽管据我所知,所有浏览器都很尊重它们)。请参阅this answer,了解如何为浏览器无法登陆的不幸用户设置用户友好的301重定向。