Подтвердить что ты не робот

Magento:? ___ SID = U, появляющийся в некоторых URL-адресах

Может кто-нибудь объяснить, почему? ___ SID = U отображается в некоторых URL-адресах Magento на моем сайте, а не на других?

Я думаю, что это как-то связано с сессиями, но мне не совсем понятно. Кроме того, то, что делает его еще более запутанным, это тот факт, что он появляется только в одних URL-адресах, а не в других.

Мне не нужно знать, как удалить его, так как я знаю о настройке в области администратора. Мне бы очень хотелось объяснить, что это такое, какова его цель и почему оно будет отображаться на некоторых страницах, а не на других. Я лучше понимаю, что происходит полностью, чем слепо следую некоторым советам относительно того, как это удалить.

4b9b3361

Ответ 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 тоже на фоне того, для чего предназначен этот тег.