我已经在同一台机器上设置了具有不同文档根目录的暂存站点和实时站点,如下所示:
mysite
:暂存网站无 SSLmysite_live
:启用 SSL 的实时网站
两个站点都有各自的数据库,其名称分别与文档根目录相同。
网站网址为:
staging.mysite.org
:暂存站点mysite.org
:现场直播
每当我尝试使用 url: 访问我的实时网站时mysite.org
,它都会向我显示暂存网站页面,并且在 url 中显示http://www.mysite.org/
。从 URL 来看,它似乎默认不采用 https。如果我将其输入为:https://www.mysite.org/
,这会起作用,并且我会获得实时网站。
如果我访问staging.mysite.org
,它会向我显示暂存站点页面。这意味着暂存网址运行正常。
我不明白为什么会发生这种情况。每次点击实时网站上的任何链接都会打开暂存网站页面,但在 URL 中它看起来像是实时网站,因为 URL 仍然为 http://www.mysite.org/
。
虚拟主机配置如下:
- 暂存站点
<虚拟主机 *:80> SuexecUserGroup“#1001”“#1001” 服务器名称 staging.mysite.org DocumentRoot /home/mysite/web/public/mysite 用户目录 /home/mysite/homes/*/web/public CustomLog /home/mysite/logs/access_log 合并 ScriptAlias /cgi-bin/ /home/mysite/cgi-bin/ ScriptAlias /fcgi-bin/ /home/mysite/fcgi-bin/ <目录 /home/mysite/web/public/mysite> 选项 -Indexes IncludesNOEXEC FollowSymLinks -MultiViews 允许覆盖全部 命令允许、拒绝 允许所有人 </目录> <目录 /home/mysite/cgi-bin> 命令允许、拒绝 允许所有人 </目录> <目录 /home/mysite/fcgi-bin> 命令允许、拒绝 允许所有人 </目录> SSLEngine 关闭 </虚拟主机>
- 现场直播
<虚拟主机 *:80> DocumentRoot“/home/mysite/web/public/mysite_live” 服务器名称 mysite.org <目录“/home/mysite/web/public/mysite_live”> 允许覆盖全部 命令允许、拒绝 允许所有人 期权+指数 </目录> </虚拟主机> <虚拟主机 *:443> DocumentRoot“/home/mysite/web/public/mysite_live” 服务器名称 mysite.org <目录“/home/mysite/web/public/mysite_live”> 允许覆盖全部 命令允许、拒绝 允许所有人 期权+指数 </目录> SSLEngine 开启 SSLCertificateFile /home/mysite/etc/SSL/mysite.org.crt SSLCertificateKeyFile /home/mysite/etc/SSL/mysite.key SSLCACertificateFile /home/mysite/etc/SSL/mysite.org.crt </虚拟主机>
我认为配置部分存在一些问题。但不知道是什么问题。
答案1
您的实时站点配置中没有ServerAlias
for www.mysite.org
,因此 Web 服务器不知道如何为该名称提供内容,并返回到默认站点(可能是暂存站点)。它为 HTTPS 正确提供服务,因为您只有一个 HTTPS 虚拟主机,即实时站点。