Apache:使用通配符永久重定向到 HTTPS

Posted

技术标签:

【中文标题】Apache:使用通配符永久重定向到 HTTPS【英文标题】:Apache: Permanent Redirect to HTTPS with Wildcard 【发布时间】:2018-01-31 12:51:04 【问题描述】:

我正在尝试将 HTTP 流量重定向到我服务器上的 HTTPS。

我有 this.example.netthat.example.netetc.example.net 的证书,并且我的 DNS 接受通配符。我想使用通配符将 HTTP 永久重定向到 HTTPS。

我试过了:

<VirtualHost *:80>
    ServerName example.net:80
    ServerAlias *.example.net
    ServerAdmin mark@example.net
    RedirectMatch 301 (.*) https://$1.example.net
</VirtualHost>

但这不起作用。

我知道我可以通过这种方式设置单独的子域,但是可以使用通配符吗?

【问题讨论】:

这能回答你的问题吗? redirect all subdomains from http to https 【参考方案1】:

正如 Apache 2.4 httpd 的 RedirectMatch Directive 所说:

语法:RedirectMatch [status] 正则表达式 URL

该指令等效于 Redirect,但使用正则表达式,而不是简单的前缀匹配。

例子:

RedirectMatch "(.*)\.gif$" "http://other.example.com$1.jpg"

Apache 使用PCRE 兼容的正则表达式。

但通常应该足够使用:

Redirect permanent / https://www.example.com/

最后但并非最不重要的部分:Redirect 仅匹配 URL-path 而不是完整的 URL!

所以你最好为你正在使用的每个子域添加一个VirtualHost 配置。

【讨论】:

以上是关于Apache:使用通配符永久重定向到 HTTPS的主要内容,如果未能解决你的问题,请参考以下文章

带有通配符子域的 Apache SSL 重写

apache永久重定向所有请求到另一个端口

apache实现301永久性重定向代码

通过 apache 重写规则永久重定向

MVC 永久使用重定向 HTTP 到 HTTPS 并关闭开发环境的方法

apache中的重定向