我在 Ubuntu 22.04 上有 Apache2,带有 php 和 mysql。我创建了两个内部网站, site1 是 https://web.domain.cz 并且 site2 与别名位于同一虚拟主机中https://web.domain.cz/second(这是第一个网站的某种管理)
这是我的虚拟主机配置
<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 框架)
PHP 会话基于 cookie,默认情况下 cookie 按域保存,由于您的 2 个站点使用相同的域,因此它们共享相同的会话。
您可以通过在会话开始时提供信息来区分不同站点来覆盖此行为,例如:
session_start([
'cookie_path'=>'second'
]);