您可以使用两个URL来访问主页

时间:2015-05-04 12:15:12

标签: redirect seo sitecore

拥有sitecore网站。情况适用于每个国家/地区,您可以使用两个网址来访问主页。

  

www.abc.com/en/home

  

www.abc.com/en

我们只想要一个 - 这对SEO和分析都不利。 我想退休www.abc.com/en/home并希望www.abc.com/en只能工作。

我已经使用了嵌入式URL =总是在web.config中,但对我没有用。

3 个答案:

答案 0 :(得分:0)

如果在LinkManager中使用LanguageEmbedding.Always。 使用Sitecore LinkManager生成的链接始终具有语言代码。 但其他网址也会奏效。

您可以使用Canonical查看Tip 17搜索引擎。

如果网址与您想要的网址不匹配,也可以进行重定向。

或阻止/重定向您的netwerk / loadbalancer / webserver或重定向模块或Sitecore <httpRequestBegin>管道中的网址。 (只是你觉得方便)

一个简单的解决方案是在您的母版页中放置一些代码:

string baseUrl = LinkManager.GetItemUrl(Sitecore.Context.Item);
if (baseUrl != Request.Path)
{
    Response.RedirectPermanent(baseUrl);
}

也适用于网址别名。

答案 1 :(得分:0)

使用IIS URL Rewrite模块,其中包含以下规则:

<rule name="Redirect home" stopProcessing="true">
    <match url="^/en/home/?$" />
    <action type="Redirect" url="/en/" />
</rule>

答案 2 :(得分:0)

在你们的帮助下,我们最终解决了我的错误,并提出了适用于各种情况的代码,例如附加查询字符串或没有它。

string baseUrl = Sitecore.Links.LinkManager.GetItemUrl(Sitecore.Context.Item);
                if (baseUrl.ToLower().Contains("?"))
                {
                    baseUrl = Request.RawUrl.Substring(0, Request.RawUrl.IndexOf("?"));
                }
                string Qurl = Request.RawUrl;
                string AppendedUrl = string.Empty;

                if (Qurl.ToLower().Contains("?"))
                { 
                    Qurl = Request.RawUrl.Substring(0, Request.RawUrl.IndexOf("?")); 
                    AppendedUrl = Request.RawUrl.Substring(Qurl.Length);
                }
                string fullPath = baseUrl + AppendedUrl;
                if (baseUrl != Qurl)
                {
                    Response.RedirectPermanent(fullPath);
                }
            }
        }

试试这个:)