Answers:
在example.com
商店中,设置以下内容:
在test.example.com
商店中,设置以下内容:
example.com
管理员中将Cookie域设置为“ .example.com” test.example.com
?
example.com
,另一种使用test.example.com
。他们都有自己的管理员。但是您只是在告诉我为其中一位管理员设置域。您是说我应该把另一个留空吗?
test.example.com
并在主商店上设置为,www.example.com
以避免Cookie重叠。
安娜提出了一些好的观点,她的答案将对很多人有用,但对我却不起作用,所以我发布了自己的答案。也许我的问题比她要解决的问题更为根本。
我的解决方案是将站点的域从更改example.com
为www.example.com
。实际上,我在互联网上的研究表明,诸如Amazon,Google,Ebay以及其他每个主要网站这样的网站之所以使用该www
前缀,可能很大程度上是由于Cookie的工作方式。也许不吧。
Cookie的默认工作方式是将其应用于所有子域。因此,如果example.com
向您发送一个cookie,然后您访问mail.example.com
,smile.example.com
或devsite.example.com
,则您的浏览器会将该cookie发送给那些站点,并且那些站点将尝试使用该cookie。但是,除非他们都使用通用的会话文件夹,否则他们将无法找到您的会话。即使那样,由于数据库配置不同,应用程序结构不同等,您可能也会遇到问题。
进行更改涉及在我的htaccess根文件中创建301重定向,更改magento core_config_data
数据库表中的安全/不安全网址,更改ServerName
Apache中的站点VirtualHosts
以及更新DNS /名称服务器设置。但这是值得的。
通过创建我的主站点www.example.com
,它的cookie现在仅适用于其子域,例如mail.www.example.com
(并且我们没有任何此类子域)。取得www.example.com
Cookie的客户端浏览器不会将其发送到devsite.example.com
,问题已解决。另外,www
在我们的域名前加一个域名真的很棒。
您可以简单地更改子域的adminhtml cookie名称。
文件有两个更改app/code/core/Mage/Core/Controller/Varien/Action.php
。
在功能preDispatch
更改行中
/** @var $session Mage_Core_Model_Session */
$session = Mage::getSingleton('core/session', array('name' => $this->_sessionNamespace))->start();
至
$namespace = $this->_sessionNamespace.($_SERVER['SERVER_NAME']=='subdomain.example.com'?'_subdomain':'');
/** @var $session Mage_Core_Model_Session */
$session = Mage::getSingleton('core/session', array('name' => $namespace))->start();
功能setRedirectWithCookieCheck
变更
/** @var $session Mage_Core_Model_Session */
session = Mage::getSingleton('core/session', array('name' => $this->_sessionNamespace));
至
$namespace = $this->_sessionNamespace.($_SERVER['SERVER_NAME']=='subdomain.example.com'?'_subdomain':'');
/** @var $session Mage_Core_Model_Session */
$session = Mage::getSingleton('core/session', array('name' => $namespace));
然后搜索文字
Mage::getSingleton('core/session', array('name' => 'adminhtml'));
在所有文件中替换为
Mage::getSingleton('core/session', array('name' => 'adminhtml'.($_SERVER['SERVER_NAME']=='subdomain.example.com'?'_subdomain':'')));
如果发现任何事件。
adminhtml
为域设置cookie的名称.example.com
。当您尝试通过test.example.com/admin进行授权时,它会尝试使用的Cookie adminhtml
进行操作.test.example.com
。Magento设置上的问题有所不同。主要问题是您不能从子域修改主域的cookie。上面的代码使Magento可以创建adminhtml
example.com的cookie adminhtml_subdomain
和subdomain.example.com的cookie ,因此它们不会以任何方式混合。更改subdomain
为您使用的正确的。
如果由于cookie问题仍然无法登录到前端(无法创建客户会话),请覆盖相应的核心文件
1.8.x之前的版本。版本-app / code / core / Mage / Customer / Model / session.php
和
从1.8.x开始 版本app / code / core / Mage / Core / Model / Session / Abstract.php
注释掉该线程中指出的行。这已解决了1.8.x之前版本商店上的前端客户登录问题。
.
域前面的第3步很重要!