Magento:?___ SID = U出现在一些网址中

时间:2012-07-02 19:48:06

标签: magento

有人可以解释一下原因吗?___ SID = U出现在我网站上的一些magento网址而不是其他网址上?

我认为它与会话有关,但并不完全清楚。此外,更令人困惑的是,它只出现在一些网址而不是其他网址中。

我不需要知道如何删除它,因为我知道管理区域中的设置。我真的想要解释它是什么,它的目的是什么以及为什么它会在某些页面而不是其他页面上显示。我非常了解发生了什么,而不是盲目地遵循一些关于如何删除它的建议。

5 个答案:

答案 0 :(得分:35)

除了Brendan的回答之外,___SID=U在缓存中用作会话ID的占位符。它由Mage_Core_Model_Url::sessionUrlVar()取代,后者又调用Mage_Core_Model_Url::sessionVarCallback()。这些方法是从Mage_Core_Block_Abstract::_afterCacheUrl()调用的,这意味着在块输出中找到的任何URL都将包含正确的会话ID(如果需要)。

所以为了摆脱你自己代码中的参数,“正确的方法”使用这个:

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

如果字符串仍然显示在呈现的页面中,那就是错误。您使用的是自定义缓存模块,还是使用非标准方式生成URL?

答案 1 :(得分:10)

SID是“会话ID”。 Magento使用它来跟踪用户在同一Magento安装中的活动。通常,Magento从一个安装(数据库)为一个网站和一个商店提供支持。

Magento可以通过一次安装为多个商店提供多个商店。 SID允许用户在浏览这些网站/商店时保持登录状态。

认为如果您启用了该功能,则在访问目录URL时会发送SID,以便Magento可以使用当前网站/商店的用户位置/状态更新会话。

如果您没有运行多网站或多商店环境,则可以安全地禁用前端的SID。

答案 2 :(得分:2)

我今天遇到的事情,虽然我发表评论,但也许会对某人有所帮助。 我发现如果在处理页面时出现一些错误,Magento将格式化/创建不正确的产品URL(包括会话ID)。但这并不一致。 值得查看服务器日志中的PHP错误。

答案 3 :(得分:1)

这是Magento 2的一般错误,已经报告给了magento。

临时修复是

转到Document Root, 找到.htaccess并添加

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

下方。

这应该可以解决问题。对我来说,这项工作在M2.1

一切顺利。

参考:https://github.com/magento/magento2/issues/5517

答案 4 :(得分:0)

我找了几个小时找到这个,准确的答案是这里列出的其他答案的组合。首先,我加快了PHP错误报告和错误记录(感谢Gergely Varga)。我看到了这个:

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包,我的服务器没有安装。安装完成后,SID=U网址全部消失。 (将来我会在将现有安装复制到新服务器之前运行Magento的安装前检查!)

感谢Vinai,了解这个标签的背景。