Magento:? ___ SID = U, появляющийся в некоторых URL-адресах
Может кто-нибудь объяснить, почему? ___ SID = U отображается в некоторых URL-адресах Magento на моем сайте, а не на других?
Я думаю, что это как-то связано с сессиями, но мне не совсем понятно. Кроме того, то, что делает его еще более запутанным, это тот факт, что он появляется только в одних URL-адресах, а не в других.
Мне не нужно знать, как удалить его, так как я знаю о настройке в области администратора. Мне бы очень хотелось объяснить, что это такое, какова его цель и почему оно будет отображаться на некоторых страницах, а не на других. Я лучше понимаю, что происходит полностью, чем слепо следую некоторым советам относительно того, как это удалить.
Ответы
Ответ 1
В дополнение к ответу Брендана, ___SID=U
используется в кеше в качестве заполнителя для идентификатора сеанса. Он заменяется на Mage_Core_Model_Url::sessionUrlVar()
, который в свою очередь вызывает Mage_Core_Model_Url::sessionVarCallback()
. Эти методы вызывают из Mage_Core_Block_Abstract::_afterCacheUrl()
, что означает, что любой URL-адрес, найденный в блочном выводе, будет содержать правильный идентификатор сеанса (если необходимо).
Итак, чтобы избавиться от параметра в вашем собственном коде, "правильный путь" использует это:
$url = Mage::getUrl('some/magento/route'); // might append ___SID parameter
$url = Mage::getModel('core/url')->sessionUrlVar($url); // process ___SID
Если строка отображается на странице рендеринга, которая является ошибкой. Вы используете какой-либо пользовательский модуль кэширования или генерируете URL-адрес с помощью нестандартного способа?
Ответ 2
SID - это "идентификатор сеанса". Magento использует это для отслеживания активности пользователя в той же установке Magento. Как правило, Magento управляет одним сайтом и одним хранилищем из одной установки (базы данных).
Magento может использовать несколько веб-сайтов с несколькими магазинами из одной установки. SID позволяет пользователям оставаться включенными во время навигации по этим сайтам/магазинам.
Я думаю, что если у вас включена функция, SID отправляется при доступе к URL-адресам каталога, поэтому Magento может обновить сеанс с местоположением/состоянием пользователя для текущего веб-сайта/хранилища.
Если вы не используете среду с несколькими веб-сайтами или несколькими магазинами, безопасно отключить SID во внешнем интерфейсе.
Ответ 3
Просто то, что я встречаю сегодня, и хотя я делаю комментарий, возможно, это поможет кому-то.
Я обнаружил, что Magento будет форматировать/создавать неправильный URL-адрес продукта (в том числе идентификатор сеанса), если при обработке страницы возникли некоторые ошибки. Однако это непротиворечиво.
Стоит посмотреть журналы вашего сервера на ошибки PHP.
Ответ 4
Это общая ошибка Magento 2, о которой уже сообщается magento.
Временное исправление
Перейдите к корню документа,
Найдите .htaccess и добавьте
RewriteCond %{HTTP_HOST} ^abc.com
RewriteRule ^(.*) www.abc.com/$1 [L,R=301]
ниже.
Это должно решить проблему. Для меня эта работа в M2.1
Все самое лучшее.
Ссылка: https://github.com/magento/magento2/issues/5517
Ответ 5
Я много часов искал, чтобы найти это, и точный ответ был комбинацией других ответов, перечисленных здесь. Во-первых, я обработал свои отчеты об ошибках PHP и регистрации ошибок (спасибо Герги Варга). Я видел это:
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 требует пакет php-mbstring
, который мой сервер не установил. Как только я установил это, все URL-адреса SID=U
исчезли. (В будущем я буду запускать предварительную установку Magento перед копированием существующей установки на новый сервер!)
Благодаря Vinai тоже на фоне того, для чего предназначен этот тег.