PHP:2个域名,1个会话

时间:2013-12-06 10:37:38

标签: php session heroku

我有一个用Heroku托管的网站。 Heroku为我的网站指定了域名someName.herokuapp.com。我有一个自定义域名www.someName.com,指向someName.herokuapp.com。为了在我的配置文件中保持一致性,我有一个变量:

$ServerPath = "somename.herokuapp.com/";

当我需要引用某个文件时,我可以去$ServerPath.$fileName

这是问题所在。当用户从www.somename.com登录时,会在服务器上创建会话。但是,如果用户在任何时候点击与$ServerPath绑定的某个链接,则用户被重定向到somename.herokuapp.com,并且在该域上,该会话似乎不存在且用户已注销。

有没有办法让我的$ ServerPath var保持为someName.herokuapp.com并让会话在www.someName.comsomeName.herokuapp.com上打开?

2 个答案:

答案 0 :(得分:0)

不幸的是,这是(会话)cookie的预期行为。您申请某个域名,浏览器会发送该域名的域名(即www.somename.com)。现在单击链接:somename.herokuapp.com。浏览器不会从www.somename.com发送任何cookie

有两种可能的解决方案:

  1. 自动将somename.herokuapp.com重定向到www.somename.com(反之亦然),因此一切都在同一(子)域。

  2. 通过网址创建会话转移。您可以使用session.use-trans-sid或类似的任何内容。见http://www.php.net/manual/en/session.configuration.php#ini.session.use-trans-sid。这种做法也有缺点。

答案 1 :(得分:0)

您可以使用.htaccess重定向用户

RewriteEngine On
RewriteBase /
RewriteRule ^(.*)$ http://www.someName.com [R=301,L]

他将从http://www.someName.com

以外的网址重定向