在我通过.htaccess将网站从子域重定向到主域后,会话无法正常工作

时间:2012-07-11 13:17:17

标签: .htaccess cakephp

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

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

2 个答案:

答案 0 :(得分:0)

会话基于Cookie(默认情况下)绑定到当前域(在您的情况下为dev.mysite.com)。如果域发生更改,则无法再从类似域(mysite.com)访问cookie(和会话)。您可能需要查看的内容是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类除外)。另一种方法是使用CookieComponent并设置$this->Cookie->domain = '.myhost.com';然后您可以从任何子域访问Cookie。请注意,如果您使用加密的Cookie,那么您将很难在框架之外获取Cookie值。

答案 1 :(得分:0)

关于将子域重定向到主域的警告。例如,如果您将一个子域名移动到您的主域名,也就是说,您正在将文件移动到您的主域名,那就没关系,但是如果您正在关闭子域名并希望要将用户重定向到您的主域,那么您将遇到规范问题。

假设您的主网站位于mydomain.com,您的子网站位于site.mydomain.com。 然后,搜索引擎抓住您可能已发布到site.mydomain.com的链接的任何网站,将site.mydomain.com视为您的主域名(如停放的域名)的附加域名,您甚至可能将列表发送到您的主域网站上有你子域名的网址。

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

您需要非常小心子域名。