skip to Main Content

Wondering if anyone has seen this behavior before. My instance of Sitecore 6.6 appends the port number to all the URLs it generates for my site. So for example, a link to the home page should be “https://example.org“, but instead it’s generated as “https://example.org:443“. Everything functions fine with the port numbers, but it’s muddling some stuff we’re trying to do with SEO and canonicalization. Does anyone know if there’s a setting or setup to not produce the port numbers? (I’m sure I could rewrite the URLs by catching them at the appropriate point in the pipeline, but I’m hoping for a simpler way before I jump to that.)

5

Answers


  1. The Sitecore LinkManager is indeed not so clever. We also experienced this issue with a mix of proxy servers and load balancers. To remove the ports, we have created a custom LinkProvider which removes the port if needed (untested code sample):

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

    And configure the new 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>
    
    Login or Signup to reply.
  2. This is caused by having the ‘scheme’ property in the configuration/sitecore/sites/site element of the web.config (or patched config) being set to ‘http’ explicitly, but making requests over SSL. Removing this, or setting it to ‘https’ resolves the issue.

    <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>   
    
    Login or Signup to reply.
  3. LinkManager:
    You can cheat the LinkManager by adding port="443" externalPort="80" to your site-definition in <sites>. Don’t know if this will cause other issues though.

    <configuration>
      <sitecore>
        <sites>
          <site name="website" port="443" externalPort="80" />
        </sites>
      </sitecore>
    </configuration>
    

    MediaManager:
    If you know the url, set the Media.MediaLinkServerUrl-setting, to prevent Sitecore from creating the wrong url. Otherwise…

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

    Config:

    <configuration xmlns:set="http://www.sitecore.net/xmlconfig/set/">
      <sitecore>
        <mediaLibrary>
          <mediaProvider set:type="SslFriendlyMediaProvider, Assembly" />
        </mediaLibrary>
      </sitecore>
    </configuration>
    
    Login or Signup to reply.
  4. I agree with Jan’s findings: setting externalPort on the site node in the configuration convinces Sitecore to exclude the port in a generated URL. I did a full write-up on my blog, including using the result for canonical URL tags.

    http://findgnosis.com/2017/06/26/hiding-port-urls-produced-sitecores-linkmanager/

    Login or Signup to reply.
  5. It’s a known bug:
    https://kb.sitecore.net/articles/913585

    There is a patch for releases below 9.1 available here:
    https://github.com/SitecoreSupport/Sitecore.Support.93141/releases

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search