Jak skonfigurować domyślny wirtualny host zwracający nagłówek 404 w apache?

14

Wiem, że zadawano podobne pytania, ale dostępne odpowiedzi nie są bardzo jasne, więc proszę o wyrozumiałość.

Po skonfigurowaniu kilku <VirtualHost>s w apache, chciałbym skonfigurować _default_ nazwa_serwera, aby zwracał komunikat 404. Tzn., Chyba że w nagłówku http hosta podano jakąś jawnie dostępną domenę, zwróć 404. (Idealnie coś bardziej bezpośredniego niż wskazywanie na nieistniejący katalog).

Każda pomoc byłaby bardzo mile widziana.

ezequiel-garzon
źródło

Odpowiedzi:

27

Próbowałeś:

Przekierowanie 404 /
ErrorDocument 404 „Nie znaleziono strony”

w domyślnym VirtualHost?


źródło
Dzięki, że to zrobiło! Ponieważ jest jasne, że mam niski poziom wiedzy specjalistycznej, mogę dodać moim nowym początkującym, że serwer domyślny powinien pojawić się pierwszy. (Zajęło mi to trochę czasu, aby dowiedzieć się!)
ezequiel-garzon
Zauważ, że jeśli ErrorDocumentwskazuje plik lub adres URL w tym vhost, zwróci również 404, generując w ten sposób wewnętrzny błąd serwera.
Cyril N.
Ta odpowiedź działałaby w przypadku witryn, na których wszystkie hosty vhost są zawarte w jednym pliku (odpowiedź Eugene'a Fidelina jest bardziej kompletna). Używając osobnych plików .conf dla każdej witryny z a2ensite, nie mogłem dowiedzieć się, jak najpierw załadować domyślną konfigurację (404).
Andrew Swift,
Redirect 404 /wystarczy, aby wyświetlić domyślną stronę Apache „Nie znaleziono”, a także działa wewnątrz określonego wirtualnego hosta (mogą wystąpić przypadki, gdy chcesz zwrócić 404 za całą witrynę, aby zniknęła z Google SERP)
lucaferrario
1

Oto przykład 000-default.conf, który zwróci błąd 404, jeśli nazwa serwera nie jest skonfigurowana dla Apache

<VirtualHost *:80>
  ServerName default
  Redirect 404 /
</VirtualHost>
<VirtualHost _default_:80>
  Redirect 404 /
</VirtualHost>
Eugene Fidelin
źródło
Mogę potwierdzić, że druga część działa, gdy wszystkie hosty vhost są skonfigurowane w jednym pliku (stawiam to na pierwszym miejscu).
Andrew Swift,
1
Lepiej jest użyć 503 (usługa niedostępna) zamiast 404, ale wątpię, czy w praktyce robi to dużą różnicę, narzędzia monitorujące zwykle ostrzegają o kodach innych niż 200.
Kris,
Działa idealnie dla http, ale nie dla https, kiedy robię z portem 443. Czy masz jakiś pomysł na ten temat?
Sohail Ahmed