我通过 .htacces 将网站从子域重定向到主域后会话不起作用



我在cakehpp上有一个网站,在子域dev.mysite.com上开发。在我将其重定向到主域(通过.htaccess)后,当我访问mysite.com时,会话停止工作。但它们在dev.myssite.com上运行良好。

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

会话基于cookie,cookie(默认情况下)绑定到当前域(在您的情况下为dev.mysite.com)。如果域发生更改,则cookie(和会话)将不再可从类似的域(mysite.com)访问。您可能想要查看的是session_set_cookie_params,并将两侧的domain设置为.mysite.com,这样您就可以访问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类别中)。另一种选择是使用cookie组件并设置$this->Cookie->domain = '.myhost.com';。然后您可以从任何子域访问cookie。请注意,如果您使用加密的cookie,那么在获取框架之外的cookie值时会遇到困难。

关于将子域重定向到主域的注意事项。例如,如果你要将一个子域网站移到你的主域,也就是说,你要将文件移到主域,那没关系,但如果你要关闭一个子域,并希望将用户重定向到你的主域,那么你就会遇到规范问题。

假设你的主网站在mydomain.com,你的子域在site.mydomain.com。然后,搜索引擎会抓取你可能发布了site.mydomain.com链接的任何网站,将site.myddomain.com视为你的主域的附加域(就像一个停放的域),你甚至可能在主网站上有你子域的url列表。

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

你需要非常小心使用子域。

最新更新