Providing I have 1 Ubuntu server which holds two sites (they are subdomains and also they hold code for other subdomains):
How could I redirect all http request for house-dev.example.com to https://house-dev.example.com and all http request for api-dev.example.com to https://api-dev.example.com?
My conf files in sites-enabled are:
For house.example.com
<VirtualHost *:80>
ServerName example.com
ServerAlias house.example.com api.example.com
(...)
</VirtualHost>
<VirtualHost *:443>
(...)
</VirtualHost>
For 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>
How could I redirect all http traffic of house-dev (and associated api-dev) to https?
I have all .crt and .key files in place and paths are all correct. I am on about the Redirect
method.
I have tried Redirect "/" "https://house-dev.example.com"
and it works fine for house-dev
, but when I try http://api-dev.example.com
the redirection goes to https://house-dev.example.com
.
Я пробовал перенаправить "/" " https://house-dev.example.com " и это работает отлично для house-dev, но когда я пробую http://api-dev.example.com , перенаправление идет на https://house-dev.example.com .
Конечно, это так, потому что оба имени хоста обрабатываются одним и тем же виртуальным хостом, и у вас есть фиксированное перенаправление на дом -dev.example.com
.
Простым исправлением для этого было бы просто создать отдельный порт 80 vhost для каждого имени хоста и иметь правильную запись перенаправления в каждом.
В качестве альтернативы вы можете использовать ] RewriteRule
для выполнения перенаправления. Что-то вроде следующего (непроверено)
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>