我正在尝试为我的 apache2 设置默认页面,用于以下情况:
- 用户正在访问http://IP 地址而不是主机名
- 请求的协议(HTTP/HTTPS)不可用(例如,只有 https://domain.com 存在)
目前我有类似的东西
<VirtualHost eserver:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/local/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
</VirtualHost>
我认为,它运行良好,我正在尝试对 HTTPS 做类似的事情,但它不起作用。
<VirtualHost eserver:443>
SSLCertificateKeyFile /etc/apache2/ssl/dummy.key
SSLCertificateFile /etc/apache2/ssl/dummy.crt
SSLProtocol all
SSLCipherSuite HIGH:MEDIUM
ErrorLog /var/log/apache2/error.log
DocumentRoot /var/www/local/
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
ServerSignature Off
</VirtualHost>
我的默认设置是将 sites-enabled 中的位置作为第一个 000-default
我不关心访问默认页面期间证书的有效性,我的目标是如果用户应用了其中一项,则不显示不同的 HTTPS 页面
答案1
嗯,你似乎没有在 HTTPS 虚拟主机中定义 DocumentRoot。从 HTTPS 虚拟主机复制 DocumentRoot 和 Directory Stanza。
答案2
虚拟指令ServerName
可以达到这个效果。
<VirtualHost eserver:443>
ServerName default
SSLEngine on
SSLCertificateKeyFile /etc/apache2/ssl/dummy.key
SSLCertificateFile /etc/apache2/ssl/dummy.crt
SSLProtocol all
SSLCipherSuite HIGH:MEDIUM
ErrorLog /var/log/apache2/error.log
DocumentRoot /var/www/local/
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
ServerSignature Off
</VirtualHost>