想知道以前是否有人见过这种行为。我的Sitecore 6.6实例将端口号附加到它为我的站点生成的所有URL。例如,主页的链接应为“https://example.org”,而是生成为“https://example.org:443”。一切都可以正常使用端口号,但是它混淆了我们试图用SEO和规范化做的一些事情。有谁知道是否有设置或设置不产生端口号? (我确信我可以通过在管道中的适当位置捕获它们来重写URL,但我希望在我跳转之前采用更简单的方法。)
答案 0 :(得分:7)
Sitecore LinkManager
确实不是那么聪明。我们还通过混合使用代理服务器和负载均衡器来解决此问题。要删除端口,我们创建了一个自定义LinkProvider
,如果需要,它会删除端口(未经测试的代码示例):
public class LinkProvider : Sitecore.Links.LinkProvider
{
public override string GetItemUrl(Item item, UrlOptions options)
{
var url = base.GetItemUrl(item, options);
if (url.StartsWith("https://"))
{
url = url.Replace(":443", string.Empty);
}
return url;
}
}
并配置新的LinkProvider
:
<configuration xmlns:set="http://www.sitecore.net/xmlconfig/set/">
<sitecore>
<linkManager defaultProvider="sitecore">
<providers>
<add name="sitecore" set:type="Website.LinkProvider, Website" />
</providers>
</linkManager>
</sitecore>
</configuration>
答案 1 :(得分:2)
这是因为web.config(或修补配置)的configuration / sitecore / sites / site元素中的'scheme'属性被明确设置为'http',但是通过SSL发出请求。删除它或将其设置为“https”可以解决问题。
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
<sitecore>
<sites>
<site patch:before="*[@name='website']"
name="my_website"
hostName="my_website.com"
scheme="http"
...
</sites>
</sitecore>
</configuration>
答案 2 :(得分:1)
我同意Jan的调查结果:在配置中的 site 节点上设置 externalPort 会说服Sitecore排除生成的URL中的端口。我在我的博客上写了一篇完整的文章,包括使用规范网址标记的结果。
http://findgnosis.com/2017/06/26/hiding-port-urls-produced-sitecores-linkmanager/
答案 3 :(得分:0)
<强> LinkManager:强>
您可以通过将port="443" externalPort="80"
添加到<sites>
中的网站定义来欺骗LinkManager。不知道这是否会引起其他问题。
<configuration>
<sitecore>
<sites>
<site name="website" port="443" externalPort="80" />
</sites>
</sitecore>
</configuration>
<强>媒体管理:强>
如果您知道该网址,请设置Media.MediaLinkServerUrl
- 设置,以防止Sitecore创建错误的网址。否则...
class SslFriendlyMediaProvider : MediaProvider
{
public override string GetMediaUrl(MediaItem item, MediaUrlOptions options)
{
var url = base.GetMediaUrl(item, options);
if(options.AlwaysIncludeServerUrl)
// https://example.com:443/a b?c=123 --> https://example.com/a%20b?c=123
return new Uri(url).AbsoluteUri;
return url;
}
}
配置:
<configuration xmlns:set="http://www.sitecore.net/xmlconfig/set/">
<sitecore>
<mediaLibrary>
<mediaProvider set:type="SslFriendlyMediaProvider, Assembly" />
</mediaLibrary>
</sitecore>
</configuration>
答案 4 :(得分:0)
这是一个已知的错误: https://kb.sitecore.net/articles/913585
此处提供9.1以下版本的补丁: https://github.com/SitecoreSupport/Sitecore.Support.93141/releases