提问人:SheldonCopper 提问时间:11/14/2023 最后编辑:SheldonCopper 更新时间:11/15/2023 访问量:62
Apache 别名是共享会话 [重复]
Apache aliases are sharing session [duplicate]
问:
我在 Ubuntu 22.04 上有 Apache2,带有 php 和 mysql。我创建了两个内部网站, site1 是 https://web.domain.cz,site2 与别名 https://web.domain.cz/second 位于同一虚拟主机中(这是第一个 Web 的某种管理)
这是我的虚拟主机配置
<VirtualHost *:443>
ServerName web.domain.cz
DocumentRoot /var/www/web
SSLEngine on
SSLCertificateFile /etc/ssl/certs/xxx.pem
SSLCertificateKeyFile /etc/ssl/private/xxx.key
<Directory /var/www/web>
Require all granted
</Directory>
<Files dbh.php>
Require all denied
</Files>
Alias /second /var/www/second
<Directory /var/www/second>
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName web.domain.cz
Redirect / https://web.domain.cz/
</VirtualHost>
疯狂的是,当我在一个网站上注销()时,我在第二个网站上注销。当我在一个网络上更改(相同的)会话变量时,它将在第二个上更改(例如,我在会话变量中存储了当前的排序顺序,如果我在一个网络上更改排序,它也会在第二个上更改)。session_destroy();
为什么会话变量是共享的,我可以用它做什么?
(我不使用任何PHP框架)
答:
2赞
shingo
11/14/2023
#1
PHP 会话基于 cookie,默认情况下 cookie 按域保存,因为您的 2 个站点使用相同的域,因此它们共享相同的会话。
您可以通过提供信息来覆盖此行为,以便在会话开始时区分不同的站点,例如:
session_start([
'cookie_path'=>'second'
]);
评论
https://web.domain.cz
https://web.domain.cz/second
they are both different websites
...从您的角度来看,是的,但从浏览器的角度来看,不是 - 只是看起来像同一域的子文件夹,因此它将使用相同的会话 cookie/second
<VirtualHost first.domain.cz:443>
<VirtualHost second.domain.cz:443>