20

有人可以解释为什么 ?___SID=U 出现在我网站上的某些 Magento URL 中,而不是其他 URL 中吗?

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

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

4

5 回答 5

35

除了 Brendan 的回答之外,我还在___SID=U缓存中用作会话 ID 的占位符。它被替换为Mage_Core_Model_Url::sessionUrlVar()which 依次调用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?

于 2012-07-03T09:12:08.377 回答
11

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

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

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

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

于 2012-07-03T05:11:56.040 回答
2

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

于 2012-11-06T20:31:30.940 回答
1

这是一个已报告给 magento 的一般 Magento 2 错误。

临时修复是

转到文档根目录,找到 .htaccess 并添加

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

以下。

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

一切顺利。

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

于 2016-11-23T06:40:13.320 回答
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

所以,我们安装的扩展之一需要php-mbstring我的服务器没有安装的包。我一安装,SID=U网址就全部消失了。(将来我将在将现有安装复制到新服务器之前运行 Magento 的预安装检查!)

也感谢 Vinai 提供了这个标签的背景。

于 2014-03-05T15:37:37.533 回答