web-dev-qa-db-fra.com

Magento:? ___ SID = U figurant dans certaines URL

Quelqu'un peut-il s'il vous plaît expliquer pourquoi? ___ SID = U apparaît dans certaines URL de Magento sur mon site et pas d'autres?

Je pense que cela a quelque chose à voir avec les sessions mais je ne suis pas tout à fait clair. En outre, ce qui rend plus déroutant est ce fait qu'il apparaît uniquement dans certaines URL et pas d'autres.

Je n'ai pas besoin de savoir comment le supprimer car je suis conscient du paramètre défini dans la zone d'administration. J'aimerais vraiment avoir une explication sur ce que c'est, sur son but et pourquoi cela apparaîtrait sur certaines pages et pas sur d'autres. Je préférerais bien comprendre ce qui se passe plutôt que de suivre aveuglément des conseils sur la façon de le supprimer.

20
user1497033

En plus de la réponse de Brendan, le ___SID=U est utilisé dans le cache comme espace réservé pour l'ID de session. Il est remplacé par Mage_Core_Model_Url::sessionUrlVar() qui appelle à son tour Mage_Core_Model_Url::sessionVarCallback(). Ces méthodes sont appelées à partir de Mage_Core_Block_Abstract::_afterCacheUrl(), ce qui signifie que toute URL trouvée dans la sortie du bloc contiendra l'ID de session correct (si nécessaire).

Donc, pour vous débarrasser du paramètre dans votre propre code de la "bonne manière", utilisez ceci:

$url = Mage::getUrl('some/magento/route'); // might append ___SID parameter
$url = Mage::getModel('core/url')->sessionUrlVar($url); // process ___SID

Si la chaîne affiche toujours dans la page rendue, c'est un bogue. Utilisez-vous un module de mise en cache personnalisé ou générez-vous des URL de manière non standard?

35
Vinai

Le SID est un "ID de session". Magento l'utilise pour suivre l'activité d'un utilisateur au sein de la même installation Magento. Normalement, Magento alimente un site Web et un magasin à partir d’une installation (base de données).

Magento pourrait toutefois alimenter plusieurs sites Web avec plusieurs magasins à partir d’une même installation. Le SID permet aux utilisateurs de rester connectés tout en naviguant sur ces sites Web/ces magasins.

Je pense si la fonction est activée, le SID est envoyé lors de l'accès aux URL du catalogue afin que Magento puisse mettre à jour la session avec l'emplacement/l'état de l'utilisateur pour le site/magasin actuel.

Si vous n'exécutez pas un environnement comprenant plusieurs sites Web ou plusieurs magasins, vous pouvez désactiver le SID en toute sécurité.

10
Brendan Falkowski

Juste quelque chose que je rencontre aujourd'hui et bien que je fasse un commentaire, cela aidera peut-être quelqu'un… .. J'ai découvert que Magento formaterait/créerait une URL de produit incorrecte (y compris l'ID de session) s'il y avait des erreurs lors du traitement de la page. Cela n’est pas cohérent par contre. Il vaut la peine de consulter les journaux de votre serveur pour rechercher les erreurs PHP.

2
42droids Ltd

Il s'agit d'un bogue général de Magento 2 déjà signalé à magento.

Solution temporaire est

Allez à la racine du document, Trouvez .htaccess et ajoutez

RewriteCond %{HTTP_Host} ^abc.com
RewriteRule ^(.*) www.abc.com/$1 [L,R=301]

au dessous de.

Cela devrait résoudre le problème. Pour moi ce travail en M2.1

Bonne chance.

Référence: https://github.com/magento/magento2/issues/5517

1
Kumar A.

J'ai cherché pendant des heures pour trouver ceci et la réponse précise était une combinaison des autres réponses énumérées ici. Tout d’abord, j’ai démarré mon compte-rendu d’erreurs PHP et la journalisation des erreurs (merci Gergely Varga). J'ai vu ça:

PHP Fatal error:  Call to undefined function mb_strrpos() in /var/www/html/app/code/local/ManaPro/FilterAjax/Model/Observer.php on line 59

Magento nécessite donc un package php-mbstring que mon serveur n’a pas installé. Dès que j'ai installé cela, les URL SID=U ont toutes disparu. (À l'avenir, je lancerai les contrôles de pré-installation de Magento avant de copier une installation existante sur un nouveau serveur!)

Merci également à Vinai pour le fond de ce que cette balise est pour.

0
Aaron Pollock