拥有sitecore网站。情况适用于每个国家/地区,您可以使用两个网址来访问主页。
www.abc.com/en/home
和
www.abc.com/en
我们只想要一个 - 这对SEO和分析都不利。 我想退休www.abc.com/en/home并希望www.abc.com/en只能工作。
我已经使用了嵌入式URL =总是在web.config中,但对我没有用。
答案 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);
}
}
}
试试这个:)