0

我在 cakephp 上有一个站点,在子域上开发:dev.mysite.com。在我将其重定向到主域(通过 .htaccess)后,当我访问 mysite.com 时会话停止工作。他们仍然可以在 dev.mysite.com 上正常工作。

.htaccess 重定向(在 public_html):RewriteRule ^(.*)$ /dev/$1

4

2 回答 2

0

会话基于(默认情况下)绑定到当前域(在您的情况下为 dev.mysite.com)的 cookie。如果域发生更改,则无法再从类似域 (mysite.com) 访问 cookie(和会话)。您可能想要查看的是session_set_cookie_params并在两侧设置为,以便您可以访问 mysite.com 的任何子域上的会话domain信息.mysite.com

http://us.php.net/manual/en/function.session-set-cookie-params.php

session_set_cookie_params(0, '/', '.mysite.com');

在你打电话之前添加这个session_start()

更新1:

在阅读CakeSession类时,似乎有一个设置主机的方法(和静态变量),但看起来并没有被使用(除了在 TestCakeSession 类中)。另一种方法是使用CookieComponent并设置$this->Cookie->domain = '.myhost.com';然后您可以从任何子域访问 cookie。请注意,如果您使用加密的 cookie,您将很难在框架之外获取 cookie 值。

于 2012-07-11T18:35:18.140 回答
0

关于将子域重定向到主域的注意事项。比如说,如果您将一个作为子域的站点移动到您的主域,也就是说,您正在将文件移动到您的主域,那很好,但是如果您要关闭一个子域并希望要将用户重定向到您的主域,那么您将遇到一个规范问题。

假设您的主网站位于 mydomain.com,而您的子域位于 site.mydomain.com。然后,搜索引擎在您可能已发布指向 site.mydomain.com 的链接的任何网站上进行爬网,会将 site.mydomain.com 视为您主域的附加域(如停放域),您甚至可能在主域中列出列表具有您的子域网址的网站。

网站管理员经常会删除子域。BAD MOVE,因为在 DNS 更改传播之前,子域将自动重定向到主网站,并且会弹出规范问题。

您需要非常小心子域。

于 2012-08-13T03:26:16.610 回答