两个可以用来点击首页的网址

Two URLs that you can use to hit the homepage

拥有一个 sitecore 网站。每个国家的情况,有两个 URL 可以用来访问主页。

www.abc.com/en/home

www.abc.com/en

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

我已经使用嵌入式 URL = 总是在 web.config 但对我不起作用。

如果您在 LinkManager 中使用 LanguageEmbedding.Always。 使用 Sitecore LinkManager 生成的链接始终具有语言代码。 但是其他 urls 也可以。

您可以使用 Canonical 参见 Tip 17 搜索引擎。

或者,如果 url 与您想要的 url 不匹配,您可以进行重定向。

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

一个简单的解决方案是在您的母版页中放置一段代码,如下所示:

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

也适用于 url 个别名。

使用 IIS URL 使用以下规则重写模块:

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

在你们所有人的帮助下,我的错误终于得到解决,我想出了适用于任何情况的代码,例如附加查询字符串或不附加查询字符串。

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);
                }
            }
        }

试试这个:)