我有一个 centos 服务器,但是我遇到了一些有关端口 443 和 ssl 的问题。我的问题是,我的服务器上的所有域都可以从 HTTPS 端口访问。
比如当我通过 HTTPS 访问我服务器上的域名时,该域名没有 SSL,它会显示默认主机页面(默认 apache 页面)
我只希望我指定的域名只使用 ssl 端口。
我有一个域名证书,并且添加了如下虚拟主机:
<VirtualHost *:80 *:443>
..
..
ServerName domain.com
ServerAlias www.domain.com
ErrorLog ...
CustomLog ...
</VirtualHost>
其他证书文件位置在 /etc/httpd/conf.d/ss.conf 中指定
我也尝试创建 2 个单独的端口 80 和 443,但对我的情况仍然没有帮助。如果我使用 HTTPS 访问其他域,我仍然会看到默认的 Apache 页面。
感谢帮助
答案1
你可能想尝试一下:
<VirtualHost *:80>
ServerName www.domain.com
ServerAlias domain.com
// non ssl config
RewriteEngine on
RewriteRule ^/(.*)$ https://www.domain.com/$1 [L,R=301]
</VirtualHost>
<VirtualHost *:443>
ServerName www.domain.com
ServerAlias domain.com
// your ssl configuration etc
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www.domain.com
RewriteRule ^/(.*)$ https://www.domain.com/$1 [L,R=301]
</VirtualHost>
这应该将所有请求重定向到 www.domain.com,无论用户使用什么其他域。如果您希望优先使用 domain.com 而不是 www.domain.com,请将 www. 从 ServerName 和 Rewrite 语句中移出并将其添加到 ServerAlias。
*:80 中的重写将你的 www.domain.com 重定向到 https 站点,而 *:443 中的重写可确保你的请求到达https://www.domaincom