2015-09-14 1 views
3

Vous vous demandez si quelqu'un a déjà vu ce comportement auparavant. Mon instance de Sitecore 6.6 ajoute le numéro de port à toutes les URL qu'il génère pour mon site. Par exemple, un lien vers la page d'accueil doit être "https://example.org", mais généré à la place "https://example.org:443". Tout fonctionne bien avec les numéros de port, mais il est en train d'embrouiller certaines choses que nous essayons de faire avec le référencement et la canonisation. Est-ce que quelqu'un sait s'il y a un réglage ou une configuration pour ne pas produire les numéros de port? (Je suis sûr que je pourrais réécrire les URL en les attrapant au bon endroit dans le pipeline, mais j'espère un moyen plus simple avant de sauter à cela.)Sitecore ajoutant des numéros de port à toutes les URL

+0

Êtes-vous sûr que vous avez sélectionné liaison HTTPS dans IIS pour le site? – xoail

+0

Également envisager de regarder dans cette question SO http://stackoverflow.com/questions/17273492/can-not-access-the-website-via-ssl – xoail

+2

Avez-vous ajouté le port à la définition '' dans la configuration? Si c'est le cas, le gestionnaire de liens n'est pas très intelligent! – jammykam

Répondre

5

Le Sitecore LinkManager n'est en effet pas si intelligent. Nous avons également rencontré ce problème avec une combinaison de serveurs proxy et d'équilibreurs de charge. Pour supprimer les ports, nous avons créé une coutume LinkProvider qui supprime le port si nécessaire (exemple de code non testé):

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

Et configurer le nouveau 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

Ceci est dû en ayant la ' La propriété 'scheme' de l'élément configuration/sitecore/sites/site de web.config (ou config patché) étant explicitement définie sur 'http', mais effectuant des requêtes sur SSL. Enlever ceci, ou en le mettant à «https» résout le problème.

<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> 
0

LinkManager: Vous pouvez tromper le LinkManager en ajoutant port="443" externalPort="80" à votre site dans la définition <sites>. Je ne sais pas si cela va causer d'autres problèmes.

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

MediaManager: Si vous connaissez l'adresse, définissez la Media.MediaLinkServerUrl -Réglage, afin d'éviter Sitecore de créer la mauvaise URL. Sinon ...

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> 
0

Je suis d'accord avec les conclusions de Jan: mise ExternalPort sur le nœud du site dans la configuration persuade Sitecore d'exclure le port dans une URL générée. J'ai fait une rédaction complète sur mon blog, y compris l'utilisation du résultat pour les tags URL canoniques.

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

+0

Je pense que cela aurait pu être un upvote et un commentaire sur la réponse de Jan. –