Wyłącz wirtualne hosty Apache dla adresów IP, ale nie dla (pod) domen


Skonfigurowałem jedną domenę i dwie subdomeny, przekierowując do odpowiedniej wersji https:
<VirtualHost *:80>
ServerName domain.com
Redirect permanent/[url=https://domain.com]https://domain.com[/url]
</VirtualHost><VirtualHost *:80>
ServerName a.domain.com
Redirect permanent/[url=https://a.domain.com]https://a.domain.com[/url]
</VirtualHost><VirtualHost *:80>
ServerName b.domain.com
Redirect permanent/[url=https://b.domain.com]https://b.domain.com[/url]
</VirtualHost>

Teraz robię małe testy:
curl [url=http://domain.com/]http://domain.com/[/url] gives me the redirect to [url=https://domain.com/]https://domain.com/[/url]
curl [url=http://a.domain.com/]http://a.domain.com/[/url] gives me the redirect to [url=https://a.domain.com/]https://a.domain.com/[/url]
curl [url=http://b.domain.com/]http://b.domain.com/[/url] gives me the redirect to [url=https://b.domain.com/]https://b.domain.com/[/url]

W porządku. Ostatni test, po prostu używając IP (a.b.c.d):
curl [url=http://a.b.c.d/]http://a.b.c.d/[/url] gives me the redirect to [url=https://a.domain.com/]https://a.domain.com/[/url]

Pobiera przekierowanie z domeny
       a.domain.com
.
Czy jest jakaś zmiana w wyłączaniu HTTP/HTTPS na żądanie użytkownika?
       [url=http://a.b.c.d/]http://a.b.c.d/[/url]
? W tej chwili dodałem przekierowanie do domeny głównej, gdzie wersja HTTPS ma certyfikat z podpisem własnym (bo to tylko IP):
<VirtualHost *:80>
Redirect permanent/[url=https://domain.com]https://domain.com[/url]
</VirtualHost><VirtualHost *:443>
SSLEngine ON
SSLCertificateFile/etc/httpd/ssl/apache.crt
SSLCertificateKeyFile/etc/httpd/ssl/apache.key Redirect permanent/[url=https://domain.com]https://domain.com[/url]
</VirtualHost>

Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Możesz utworzyć domyślnego wirtualnego hosta bez
         ServerName
i bez przekierowywania do konkretnego vhosta. O ile rozumiem, tego potrzebujesz. Apache domyślnie używa pierwszego z nich.
         VirtualHost
dyrektywy, jeśli znajduje się w plikach konfiguracyjnych, więc po prostu wstaw
         ServerName
bez widoczności w
         httpd.conf
(lub jakkolwiek to się nazywa w twoim systemie) bezpośrednio.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

W nazwanym VirtualHost:
<VirtualHost *:80>
ServerName example.com
Redirect permanent/[url=https://example.com]https://example.com[/url]
</VirtualHost><VirtualHost *:443>
ServerName example.com
SSLEngine On
###other directives below
</VirtualHost>

To zawsze/wymusi przekierowanie użytkowników z

http://example.com
http://example.com
do

https://example.com
https://example.com
.
Jeśli chcesz, aby użytkownicy mogli używać protokołu HTTP lub HTTPS, użyj obu konfiguracji. Nie przekierowuj.
<VirtualHost *:80>
ServerName example.com
###other directives below
</VirtualHost><VirtualHost *:443>
ServerName example.com
SSLEngine On
###other directives below
</VirtualHost>

W przypadku konfiguracji opartej na adresie IP powyższa konfiguracja będzie działać, jeśli tylko uruchomisz jedną witrynę na porcie 80 i jedną na porcie 443.
<VirtualHost 192.168.1.100:80>
###other directives below
</VirtualHost><VirtualHost 192.168.1.100:443>
SSLEngine On
###other directives below
</VirtualHost>

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się