Wie kann ich eine http-Website und eine https-Website auf einem einzigen IP-Server in Apache einrichten?

488
peter

Ich möchte eine http-Website einrichten: http://example1.com und eine https-Website: https://example2.com mit der folgenden Konfiguration:

Listen 80 Listen 443 NameVirtualHost *:80 NameVirtualHost *:443 <VirtualHost *:80> ServerName example1.com DocumentRoot /var/www/example1.com/public_html </VirtualHost>  <VirtualHost *:443> ServerName example2.com DocumentRoot /var/www/example2.com/public_html SSLCertificateFile... SSLCertificateKeyFile... SSLEngine On </VirtualHost> 

Wenn ich jedoch https://example1.com besuche, werde ich zu https://example2.com weitergeleitet . Wenn ich http://example2.com besuche, werde ich zu http://example1.com weitergeleitet . Das will ich nicht. Ich möchte, dass https://example1.com und http://example2.com überhaupt nicht existieren. Wie soll ich es machen?

0

1 Antwort auf die Frage

3
grawity

Sie werden noch zwei weitere Blöcke Virtualhost definieren. Wenn Apache für diesen Namen keinen passenden VirtualHost finden kann, verwendet er den ersten zum Port gehörenden VirtualHost.

Natürlich müssen Sie nicht dieselbe Website bereitstellen:

  • Sie können eine Fehlerseite bereitstellen, z. B. eine generische 404 nicht gefunden . Das wird die Leute ärgern.
  • Für example2.comkönnen Sie eine RewriteRule verwenden, um alle HTTP-Besucher zu HTTPS umzuleiten.
  • Für example1.com... na ja, ich verstehe wirklich nicht, warum Sie, dass über HTTPS nicht dienen würde?

Sie können jedoch nicht den Browser darüber informieren, dass die Domäne nicht existiert, da sie immer noch dieselbe Domäne ist, unabhängig davon, wie auf sie zugegriffen wird.

Ich habe überlegt, zwei weitere VirtualHost-Blöcke zu verwenden und die http / https-Version der Website bereitzustellen, die ich mit 404 Not Found nicht möchte. Aber ich denke, das würde SEO nichts bringen. Die Verwendung von RewriteRule ist eine praktikable Methode, jedoch etwas komplex. Was ich möchte, ist: Wenn Sie https://example1.com oder http://example2.com besuchen, ist es so, als ob Apache nicht gestartet wird oder die Website niemals auf dem Server eingerichtet ist. peter vor 6 Jahren 0
Sie können csn Redirect-Regeln verwenden, die einfacher sind als RewiteRules, oder Ihre Anwendung kann dies in vielen Fällen erledigen. davidgo vor 6 Jahren 1
@ peter: "apache ist nicht gestartet" ist unmöglich. Sie greifen auf dieselbe IP-Adresse und denselben Port zu - Sie erhalten dieselben Ergebnisse. Der Hostname ist nur bekannt: _after_ Apache akzeptiert und erhält die Anfrage! grawity vor 6 Jahren 0
@ peter: Was "gutes SEO" angeht, sind Weiterleitungen in Ordnung, aber die Verwendung von HTTPS ist für Ihre Website wirklich kein Vorteil. grawity vor 6 Jahren 0
@grawity, Stellen Sie sich vor, Sie haben nur eine https-Website auf Ihrem Server eingerichtet (ein virtueller Host, nur Port 443). Suchmaschinen erkennen nie die Existenz einer http-Version der Website. Ich denke, das ist der beste Weg für SEO. Obwohl die Umleitung theoretisch keinen Einfluss auf SEO hat, finde ich, dass dies nicht sehr natürlich ist. peter vor 6 Jahren 0