Redirect http to https on dev domain only (same server as live domain)

Providing I have 1 Ubuntu server which holds two sites (they are subdomains and also they hold code for other subdomains):

  • house.example.com (also I have api.example.com) - production site
  • house-dev.example.com (also have api-dev.example.com) - development site

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.

0
задан 2 May 2018 в 12:21
1 ответ

Я пробовал перенаправить "/" " 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>
0
ответ дан 5 December 2019 в 06:04

Теги

Похожие вопросы