仅在开发域上将 http 重定向到 https(与实时域相同的服务器)

仅在开发域上将 http 重定向到 https(与实时域相同的服务器)

假设我有 1 台 Ubuntu 服务器,其中包含两个站点(它们是子域,同时也包含其他子域的代码):

  • house.example.com(还有 api.example.com)- 生产站点
  • house-dev.example.com(还有 api-dev.example.com)- 开发站点

我怎样才能将所有对 house-dev.example.com 的 http 请求重定向到https://house-dev.example.com并且所有对 api-dev.example.com 的 http 请求都https://api-dev.example.com

我在 sites-enabled 中的配置文件是:

对于 house.example.com

<VirtualHost *:80>
    ServerName example.com
    ServerAlias house.example.com api.example.com
    (...)
</VirtualHost>

<VirtualHost *:443>
    (...)
</VirtualHost>

对于 house-dev.example.com:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias house-dev.example.com api-dev.example.com
    Redirect "/" "https://house-dev.example.com"
    (...)
</VirtualHost>

<VirtualHost *:443>
    (...)
</VirtualHost>

我如何将 house-dev(和相关的 api-dev)的所有 http 流量重定向到 https?

我已准备好所有 .crt 和 .key 文件,路径也都正确。我正在研究方法Redirect

我已尝试过Redirect "/" "https://house-dev.example.com"并且它工作正常house-dev,但是当我尝试http://api-dev.example.com重定向到https://house-dev.example.com

答案1

我已尝试重定向“/”https://house-dev.example.com“它对 house-dev 来说运行良好,但是当我尝试http://api-dev.example.com重定向到https://house-dev.example.com

当然可以,因为两个主机名均由同一虚拟主机处理,并且您有一个固定的重定向到house-dev.example.com

一个简单的解决方法是,为每个主机名创建一个单独的端口 80 虚拟主机,并在每个主机中都有正确的重定向条目。

或者,您可以使用RewriteRuleperform 进行重定向。类似以下内容(未经测试)

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

Redirect显然,如果在位置块内使用,也可以使用变量。以下内容来自https://stackoverflow.com/questions/40289269/using-redirectmatch-with-http-host-in-the-destination

<Location "/">
    Redirect "https://%{HTTP_HOST}%{REQUEST_URI}"
</Location>

相关内容