从一个子域重定向到另一个子域时,如何保留会话信息?

时间:2009-07-14 20:00:37

标签: php session redirect subdomain

我正在用PHP编程。

我想将ht tps://abc.example.com/blah1/blah2重定向到htt ps:// w ww .example.com / blah1 / blah2但我不想重定向htt ps://abc.example.com重定向到ht tps:// ww w.example.com

是否可以在重定向中保留会话信息?

谢谢。

5 个答案:

答案 0 :(得分:3)

您可以继续使用现在的重定向,但调整session.cookie_domain以使用顶级域名(例如example.com)。您可以使用session_set_cookie_params或在php.ini文件中设置session.cookie_domain(或php_value指令后的.htaccess文件中)来执行此操作。这应该允许您的会话信息在您网站的所有子域中持久存在。

答案 1 :(得分:1)

如果您使用cookie作为会话ID,则需要为公共域设置cookie。如果您使用www.example.com foobar .example.com,则需要为example.com设置Cookie,使其对www.example.com均有效}和 foobar .example.com

答案 2 :(得分:0)

如果您可以使用apache的重定向,则可以尝试

RedirectMatch /(.+) https://www.domain.com/$1

使用PHP将是

<?php


    if ($_SERVER['REQUEST_URI'] != "/") {
        header("Location: ".$_SERVER['REQUEST_URI']);
        exit;
    }

?>

关于会话无效,就像Gumbo所说的那样,为主域名而不是特定域名发布了cookie。

答案 3 :(得分:0)

我想你可以通过将你的sessionid发布(POST)到一个新域来重定向,并用你自己的会话处理程序将你的会话数据存储在mysql中。

答案 4 :(得分:-2)

使用javascript重定向。