![仅在开发域上将 http 重定向到 https(与实时域相同的服务器)](https://linux22.com/image/721257/%E4%BB%85%E5%9C%A8%E5%BC%80%E5%8F%91%E5%9F%9F%E4%B8%8A%E5%B0%86%20http%20%E9%87%8D%E5%AE%9A%E5%90%91%E5%88%B0%20https%EF%BC%88%E4%B8%8E%E5%AE%9E%E6%97%B6%E5%9F%9F%E7%9B%B8%E5%90%8C%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%89.png)
假设我有 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 虚拟主机,并在每个主机中都有正确的重定向条目。
或者,您可以使用RewriteRule
perform 进行重定向。类似以下内容(未经测试)
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>