使用 Red Hat 上的 Apache 将多个子域的 HTTP 重定向到 HTTPS

使用 Red Hat 上的 Apache 将多个子域的 HTTP 重定向到 HTTPS

我最近为我的网站添加了通配符 SSL 证书。如何获取该证书,以便当用户访问网站时强制他们使用 https?

SSL 涵盖 *.staging.domain.com 形式的网站,我需要它来让所有这些网站都转为 https 版本。但是,同一台服务器上还有另一个网站,即 *.domain.com,它没有 SSL,不应重定向到 https。

我曾考虑过使用带有重定向的 .htaccess 文件,但不仅无法使其工作,我还想使其成为服务器范围的更改,而不需要为每个站点都设置 .htaccess 文件。

我还发现了另一个问题,我只能访问办公室内的 https 站点,而无法访问其他地方。

答案1

最简单的方法是使用 .htaccess,正如您提到的那样。如果您愿意,可以将重写规则放在 Apache 配置中。根据文件系统和 Apache 配置的布局,还可以在配置中创建一个与所有启用 SSL 的站点相匹配的模式匹配的 <Directory> 条目。

通过网络快速搜索,建议将以下内容将非 SSL 请求重定向到 https://

RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]

如果您通过 NAT 路由器从外部访问并且 http:// 可以正常工作,那么我认为问题很可能是端口 443 没有转发到您的 Web 服务器。

相关内容