Apache 虚拟主机从 https 子域重定向到子目录

Apache 虚拟主机从 https 子域重定向到子目录

我如何重定向请求到https://blog.example.comhttps://example.com/blog

阅读 apache 文档中关于何时不使用重写模式的内容后,我尝试了一个简单的重定向,例如

Redirect https://blog.example.com https://example.com/blog

但当我访问https://blog.example.com,它不会重定向我。只显示证书错误。是否有可能重定向 HTTPS 子域?当我使用类似以下内容时,它可以与 HTTP 配合使用:

<VirtualHost *:80>
    ServerName blog.example.com
    Redirect / https://example.com/blog/
</VirtualHost>

类似这样的情况:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^([^\.]+)\.example\.com$
RewriteRule ^/(.*)$ https://example.com/%1/$1 [R=301,L]

仅在使用 HTTP 时有效,而不是 HTTPS......

谢谢。

答案1

您的配置适用于VirtualHost *:80,换句话说适用于http端口。 的端口https是 443。找到该配置并在那里应用重定向。

答案2

我认为您可以为此使用 mod_alias。

在您的 blog.example.com 虚拟主机中:

RedirectMatch (.*)$ / https://example.com/blog/$1

https://httpd.apache.org/docs/2.4/mod/mod_alias.html

答案3

如果浏览器标记证书错误,则将中断交易重定向触发。如果您不使用 HSTS,您可以通过单击错误来确认这一点,并且重定向将照常继续。错误本身可能由于多种原因而出现,浏览器会告诉您哪些原因适用,但最有可能的是您的证书仅对 有效example.com并且没有 SAN 条目blog.example.com(或通配符*.example.com)。要解决此问题,您可以重新生成证书以包含此附加名称,或者您可以获取额外的证书并调整服务器配置以将此证书提供给子域 - 无论哪种情况,您选择的证书提供商(CA)都应该能够帮助您。

相关内容