Bastian: mod_rewrite

Hallo zusammen

Hab einiges selbst ausprobiert und gerade das Forum fertig durchsucht und alles durchgelesen, aber leider keine Lösung gefunden.

Ich habe in meiner httpd.conf z.B. folgenden VirtualHost:

<VirtualHost *>
DocumentRoot /var/virtual/domain
ServerName www.domain.de
ServerAdmin admin@domain.de
CustomLog /var/virtual/domain/log/access.log combined
Alias /phpadmin/ /var/www/phpMyAdmin/
</VirtualHost>

Jetzt sollte es eigentlich so sein, dass, egal ob jemand bla.domain.de oder nur domain.de eingibt, er immer "umgeleitet" wird zu www.domain.de. Eventuell sollte das ganze sogar so gesteuert sein, dass nur umgeleitet wird wenn für die angewählte Subdomain kein Eintrag als VirtualHost existiert. Das ist natürlich ein Fall für mod_rewrite, welches ich z.B. hier auch erfolgreich einsetze:

<IfModule mod_rewrite.c>
  <IfModule mod_ssl.c>
    <Location /phpadmin>
      RewriteEngine on
      RewriteCond %{HTTPS} !=on
      RewriteRule . https://%{HTTP_HOST}%{REQUEST_URI}  [L]
    </Location>
  </IfModule>
</IfModule>

Jedoch hab ich es nicht geschafft, mein oben genanntes Anliegen mit mod_rewrite umzusetzen... kann mir jemand helfen?

Gruss
Bastian

  1. <VirtualHost *>
    ServerName www.domain.de
    </VirtualHost>

    Jetzt sollte es eigentlich so sein, dass, egal ob jemand bla.domain.de oder nur domain.de eingibt, er immer "umgeleitet" wird zu www.domain.de.

    Nein, der Server heißt www.domain.de, nicht bla.domain.de und auch nicht domain.de - genau so, wie Du es mit ServerName und ServerAlias definierst.

    Eventuell sollte das ganze sogar so gesteuert sein, dass nur umgeleitet wird wenn für die angewählte Subdomain kein Eintrag als VirtualHost existiert.

    Unbekannte Einträge landen beim Hauptserver oder beim ersten <VirtualHost>-Eintrag (konsultiere die Apache-Anleitung).

    Ob es sonderlich intelligent ist, nicht existierende Objekte (auch bzw. gerade im DNS) mit der Antwort "gibt es dort um die Ecke" anstatt "gibt es nicht" zu quittieren, lassen wir mal dahingestellt.

    1. Ob es intelligent ist oder nicht... wenn ich auf einem Server z.B. 5 VirtualHosts habe und jemand gibt anstatt www.domain5.de z.B. w.domain5.de ein, dann möchte ich nicht, dass dieser bei www.domain1.de landet.

      1. wenn ich auf einem Server z.B. 5 VirtualHosts habe und jemand gibt anstatt www.domain5.de z.B. w.domain5.de ein, dann möchte ich nicht, dass dieser bei www.domain1.de landet.

        Entsprechende Konfiguration des DNS-Systems vorausgesetzt, wird er gar nicht erst bei www.domain1 landen, denn wenn w.domain5 nicht im DNS-Server eingetragen ist, kann auch keine Verbindung zum diesem Webserver hergestellt werden.
        Derartige Fehler können also schon frühzeitig mit einer eindeutigen Meldung im Browser abgeblockt werden. Lässt sich ein universeller DNS-Eintrag nicht ändern, kann man immer noch als ersten <VirtualHost>-Block für alle Anfragen eine 500er Fehlerseite mit passendem Hilfstext ausgeben, und erst als zweiten Block domain1 konfigurieren.

        Wer meint, jeden noch so simplen Vertipper automatisch korrigieren zu müssen, tut seiner Kundschaft vielleicht für eine Sekunde etwas gutes (wenn sie überhaupt wert darauf legt), fördert auf lange Sicht aber nur die falsche Schreibweise. Ein- und dieselbe Webseite wird wegen Vertippern in Linklisten über kurz oder lang unter allen möglichen und unmöglichen Namen im Netz stehen.
        Ob Besucher, die vor Bequemlichkeit nichtmal die Korrektur ihrer Eingabe zustande bringen (denn diese zwei Tastendrücke willst Du ihnen ja abnehmen), wertvolle, d.h. wiederkehrende, aktive und weiterempfehlende Besucher sind, für die es sich lohnt (egal, ob finanziell oder ideell), eine Webseite zu betreiben, lassen wir mal dahingestellt.

        Man muß nicht jede Schlampigkeit tolerieren. Willst Du das doch, kannst Du ServerAlias auch mit Sternchen und Fragezeichen ausrüsten. Diese Funktionsweise ist leider nur im "Name-based virtual hosts"-Kapitel der Apache-Anleitung beschrieben, nicht beim ServerAlias-Eintrag selber.