Mam konfigurację Apache2 z wieloma VirtualHostami. Mój DNS jest ustawiony na akceptację *.<domain>.<tld>
w wielu domenach. Wszystko działa poprawnie, ale jeśli przejdę do something-random-here.example.com
, wydaje mi się, że wybrano nieprawidłowy VirtualHost (domyślam się, że pierwszy lub ostatni znajdzie). Czy istnieje sposób, aby powiedzieć Apache, aby używał pewnych reguł, jeśli żaden z wpisów VirtualHost nie pasuje do domeny lub subdomeny? Wolałbym zwrócić 404.
12
ports.conf
. Nie działało, ponieważ próbowałem dopasować *: 80, gdy używałem <ip>: 80 na moich wirtualnych hostach. Zamiast tego musiałem utworzyć osobny domyślny wpis dla każdego adresu IP i teraz działa.Symbole wieloznaczne obejmują pliki konfiguracji witryny:
Uporządkuj pliki konf. Witryny, aby były ładowane w oczekiwanej kolejności. Przykład...
01-httpd.conf
02-site1-httpd.conf
03-site2-httpd.conf
itp...
Apache odczyta je w kolejności. Następnie utwórz taki, który zawsze ładuje się jako ostatni, aby złapać niedopasowane hosty wirtualne i zwrócić 404 zamiast ładowania domyślnej witryny.
99-catchall-httpd.conf
Porty należy zastąpić portami, na których nasłuchuje httpd. Lub jeśli masz httpd nasłuchujący na określonych interfejsach, musisz zamiast tego dodać catchall dla każdego interfejsu, na przykład:
Mam nadzieję że to pomoże. Korzystam z tej metody, aby ładować witryny w określonej przeze mnie kolejności i zapobiegać niezamierzonemu ładowaniu nieoczekiwanych hostów wirtualnych.
źródło
Jak
Moritz Both
wspomniano, Apache2 użyje pierwszego wirtualnego hosta, który znajdzie, jeśli nie jest zgodny z żądanym.Kiedy po raz pierwszy instalujesz Apache2, istnieje domyślna konfiguracja strony internetowej, której możesz użyć jako szablonu, zmodyfikować lub usunąć, a ja zawsze zastanawiałem się, do czego właściwie służy 000-default.conf, ponieważ oni też mieli default.conf. Po przeczytaniu tego
Moritz Both
, co powiedziano, wszystko ma teraz większy sens.To, co zrobiłem dla mojego serwera, to skopiowanie konfiguracji domyślnej nazwy hosta (witryny) do pliku 000-default.conf i
a2ensite 000-default
.Teraz, za każdym razem, gdy do mojej witryny pojawia się niedopasowane żądanie domeny, wyświetla stronę domyślną 000, która jest tylko kopią mojej domyślnej strony domyślnej.
źródło
<VirtualHost *:443> ... Redirect / https://baseurl/ ... </VirtualHost>
ale adres URL pozostaje taki sam. Zrobiłem to samo dla wersji non-ssl i przekierowuje poprawnie. Jakieś pomysły?