Sitecore将端口号添加到所有URL

Sitecore将端口号添加到所有URL,url,sitecore,port-number,Url,Sitecore,Port Number,想知道以前是否有人见过这种行为。我的Sitecore 6.6实例将端口号附加到它为我的站点生成的所有URL。例如,到主页的链接应该是“”,但它生成为“”。端口号对所有功能都很好,但它混淆了我们试图用SEO和规范化来做的一些事情。有人知道是否存在不生成端口号的设置或设置吗?(我确信我可以通过在管道中的适当位置捕获URL来重写URL,但我希望在开始之前有一种更简单的方法。)SitecoreLinkManager确实不是那么聪明。我们在混合使用代理服务器和负载平衡器时也遇到了这个问题。为了删除端口,我

想知道以前是否有人见过这种行为。我的Sitecore 6.6实例将端口号附加到它为我的站点生成的所有URL。例如,到主页的链接应该是“”,但它生成为“”。端口号对所有功能都很好,但它混淆了我们试图用SEO和规范化来做的一些事情。有人知道是否存在不生成端口号的设置或设置吗?(我确信我可以通过在管道中的适当位置捕获URL来重写URL,但我希望在开始之前有一种更简单的方法。)

Sitecore
LinkManager
确实不是那么聪明。我们在混合使用代理服务器和负载平衡器时也遇到了这个问题。为了删除端口,我们创建了一个自定义的
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>

这是由于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>   


链接管理器: 您可以通过在
中的站点定义中添加
port=“443”externalPort=“80”
来欺骗LinkManager。但不知道这是否会导致其他问题


MediaManager: 如果知道url,请设置
Media.MediaLinkServerUrl
-设置,以防止Sitecore创建错误的url。否则

类SslFriendlyMediaProvider:MediaProvider
{
公共重写字符串GetMediaUrl(MediaItem项、MediaUrlOptions选项)
{
var url=base.GetMediaUrl(项目、选项);
if(options.AlwaysIncludeServerUrl)
// https://example.com:443/a b?c=123-->https://example.com/a%20b?c=123
返回新的Uri(url);
返回url;
}
}
配置:


我同意Jan的发现:在配置中的站点节点上设置externalPort可以说服Sitecore在生成的URL中排除该端口。我在我的博客上写了一篇完整的文章,包括使用规范URL标记的结果

这是一个已知的错误:

此处提供了9.1以下版本的修补程序:

你确定你在IIS中为站点选择了HTTPS绑定吗?也考虑到这个问题,你在CONFIG中把端口添加到<代码> <代码>定义吗?如果是这样,那就是为什么链接管理器不是很聪明!我认为这可能是对简的回答的一次投票和评论。这个外部链接不再起作用。表示域已过期。请更新您的评论。这是什么版本的?它在8.1中似乎不起作用,8.1似乎只理解“port”属性。
<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>