C# 搜索引擎优化和重定向

C# 搜索引擎优化和重定向,c#,asp.net,redirect,C#,Asp.net,Redirect,我有下面的代码来重定向我的站点的“非www”版本的所有请求,改为转到“www”版本,重定向正在工作。我相应地更新了谷歌网站管理员工具中的设置。我从一家公司获得了这个代码 如何更改此代码以适应从“www”到“非www”的版本?让我困惑的是,所有网站都以“http://”开头。其次,如果我将我的站点迁移到“https://”,我将如何做到这一点?规范链接会处理这个问题吗,还是我需要再次更改上面的代码 如何更改此代码以适应从“www”到“非www”的版本 其次,如果我将我的站点迁移到“https://

我有下面的代码来重定向我的站点的“非www”版本的所有请求,改为转到“www”版本,重定向正在工作。我相应地更新了谷歌网站管理员工具中的设置。我从一家公司获得了这个代码

如何更改此代码以适应从“www”到“非www”的版本?让我困惑的是,所有网站都以“http://”开头。其次,如果我将我的站点迁移到“https://”,我将如何做到这一点?规范链接会处理这个问题吗,还是我需要再次更改上面的代码

如何更改此代码以适应从“www”到“非www”的版本

其次,如果我将我的站点迁移到“https://”,我将如何做到这一点?规范链接会处理这个问题吗,还是我需要再次更改上面的代码

Request.Url.Scheme
(即
http
https
)正在从当前请求传递,因此这不会处理该细节

MVC有一个可以注册为全局过滤器的应用程序来处理重定向。如果这不能满足你的需要,你也可以

Canonical标记用于在多个URL上有重复内容的情况。301重定向避免了这种情况,因此在这种情况下不需要它

注意事项:

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

301重定向并不是所有浏览器都支持的(尽管据我所知,所有搜索引擎都支持301重定向)。请参阅如何为那些浏览器未按您的要求放置的不幸用户设置用户友好的301重定向


答案很好,但我不知道如何在相反的情况下更改现有代码:将所有“www”指向“非www”版本?上面的代码应该可以做到这一点。这里有几个细微的变化1)
www
字符串检查2)之前,code>从生成的URL中删除
www
。啊哈!非常感谢,我猜Request.Url.Scheme无法处理它。
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);
}
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);
}