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
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 customLinkProvider
which removes the port if needed (untested code sample):And configure the new
LinkProvider
: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.
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.MediaManager:
If you know the url, set the
Media.MediaLinkServerUrl
-setting, to prevent Sitecore from creating the wrong url. Otherwise…Config:
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/
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