cross: [.htaccess] Subdomain auf Pfad umleiten?

Guten Tag zusammen,

habe viel zudem Thema gegoogelt, aber nix passendes gefunden.

Wie kann ich (falls das überhaupt möglich ist) eine Subdomain an eine URL weiterleiten?

Z.B. soll der Aufruf "http://beispiel.ein-beispiel.de" an den Pfad "http://www.ein-beispiel.de/index.php?id=1234" übergeben werden.

Ist das Möglich, oder funktioniert mod_rewrite nur bis zum Verzeichniss?

Danke im voraus.

MfG
cross

  1. Z.B. soll der Aufruf "http://beispiel.ein-beispiel.de" an den Pfad "http://www.ein-beispiel.de/index.php?id=1234" übergeben werden.

    Für Beispiele bitte RFC 2606 Abschnitt 3 beachten.

    Ist das Möglich, oder funktioniert mod_rewrite nur bis zum Verzeichniss?

    Ja, es ist möglich und auch (besonders) mit mod_rewrite.

    Setze eine RewriteCond auf den HTTP_HOST. Wenn dieser deiner Wunsch-Subdomain entspricht, schreibe mittels RewriteRule auf dein Wunschziel um (bzw. leite dorthin weiter).

    1. Moin!

      Z.B. soll der Aufruf "http://beispiel.ein-beispiel.de" an den Pfad "http://www.ein-beispiel.de/index.php?id=1234" übergeben werden.

      Für Beispiele bitte RFC 2606 Abschnitt 3 beachten.

      Ist das Möglich, oder funktioniert mod_rewrite nur bis zum Verzeichniss?

      Ja, es ist möglich und auch (besonders) mit mod_rewrite.

      Setze eine RewriteCond auf den HTTP_HOST. Wenn dieser deiner Wunsch-Subdomain entspricht, schreibe mittels RewriteRule auf dein Wunschziel um (bzw. leite dorthin weiter).

      Das ist nur notwendig, wenn die eher unsinnige Konfiguration gewählt wird, sämtliche Subdomains (inklusive "www") nur auf eingemeinsames DOCUMENT_ROOT zeigen zu lassen.

      Andernfalls reicht ein schlichtes "Redirect", ggf. in der entsprechenden Ausprägung "RedirectPermanent" oder "RedirectTemporary", bei komplizierteren Aufgabenstellungen wäre auch "RedirectMatch" denkbar.

      mod_rewrite ist zwar das Schweizer Taschenmesser der URL-Manipulation, aber deshalb nicht pauschal universell einzusetzen.

      - Sven Rautenberg

      1. Andernfalls reicht ein schlichtes "Redirect", ggf. in der entsprechenden Ausprägung "RedirectPermanent" oder "RedirectTemporary", bei komplizierteren Aufgabenstellungen wäre auch "RedirectMatch" denkbar.

        Von sämtlichen Subdomains ist doch keine Rede - wie wärs mit

        hochbau.example.com und tiefbau.example.com die dann auf example.com/bereich/hochbau und example.com/bereich/tiefbau weitergeleitet werden?

        mod_rewrite ist zwar das Schweizer Taschenmesser der URL-Manipulation, aber deshalb nicht pauschal universell einzusetzen.

        Da gebe ich dir Recht, in diesem Fall erschien mir das aber sinnvoll zumal das ja durchaus sinvoll sein kann.

        interpret.musikseite.example.com hier könnte "interpret" eine Wildcard-Subdomain sein, die einfach mal pauschal auf die jeweilige Interpretenseite umgeleitet wird - ohne dass man dafür 600.000 Virtual Hosts anlegen müsste ;)

    2. Hallöchen auch,

      Setze eine RewriteCond auf den HTTP_HOST. Wenn dieser deiner Wunsch-Subdomain entspricht, schreibe mittels RewriteRule auf dein Wunschziel um (bzw. leite dorthin weiter).

      Genial, Danke! ;)

      RewriteEngine On
      RewriteBase /
      RewriteCond %{HTTP_HOST} ^(www.)?beispiel.ein-beispiel.de
      RewriteRule .* http://www.ein-beispiel.de/index.php?id=248&no_cache=1 [L,R=301,QSA]

      Die Eingabe "http://www.beispiel.ein-beispiel.de" wird komischerweise nicht umgeleitet, obwohl es doch in der .htaccess drinsteht "^(www.)".

      Wo liegt mein Fehler?

      MfG
      cross

      1. Hallöchen auch,

        Die Eingabe "http://www.beispiel.ein-beispiel.de" wird komischerweise nicht umgeleitet, obwohl es doch in der .htaccess drinsteht "^(www.)".

        Wo liegt mein Fehler?

        War ganz einfach. Eine weitere Subdomain mit www.beispiel.mein-beispiel.de eingerichtet und dort im httpdocs ebenfalls einen entsprechenden Redirect platziert.

        MfG
        cross

  2. Hallo,

    Z.B. soll der Aufruf "http://beispiel.ein-beispiel.de" an den Pfad "http://www.ein-beispiel.de/index.php?id=1234" übergeben werden.

    woran scheiterst du momentan?

    Ist das Möglich, oder funktioniert mod_rewrite nur bis zum Verzeichniss?

    Damit mod_rewrite über eine .htaccess-Datei funktionieren kann, muss der Apache (a) den Request überhaupt erhalten und (b) einem Verzeichnis unterhalb des Document Root zuordnen können, in dem dann die .htaccess liegt.
    Du brauchst also als erstes einen DNS-Eintrag, der beispiel.ein-beispiel.de auf deinen Server abbildet (das kann eine einzeln definierte Subdomain sein, oder auch ein Wildcard-Eintrag für *.ein-beispiel.de).

    Als nächstes ist die Frage, ob du die Zugriffe wirklich auf eine andere URL umleiten, also ein Redirect auslösen willst. Dann wäre mod_rewrite nicht unbedingt nötig; die Direktive Redirect aus mod_alias würde genügen.
    Dagegen ist mod_rewrite richtig, wenn du den Zugriff auf die Subdomain eben *nicht* auf eine andere URL abbilden, sondern serverintern umleiten willst.

    In der RewriteRule musst du die Server-Variable HTTP_HOST auswerten und deine Regel darauf aufbauen. Die Beschreibung von RewriteCond in der Apache-Doku zeigt ein paar Beispiele, an denen man sich orientieren kann.

    So long,
     Martin

    --
    Soziologen sind nützlich, aber keiner will sie haben.
    Bei Informatikern ist es gerade umgekehrt.
  3. Ist das Möglich, oder funktioniert mod_rewrite nur bis zum Verzeichniss?

    Möglich kann das schon sein aber das Problem hier ist: Es gibt keine eindeutige Antwort, sondern es hängt von der Konfiguration des Servers ab. Man kann Subdomains von der http.conf aus anlegen oder von der .htaccess.

    Die conf-Datei ist zentral auf dem Server vorhanden man braucht root-Rechte um die Inhalte ändern zu können. Die .htaccess ist lokal im Webverzeichnis und hier genügen Nutzerrechte.

    Die http.conf gehört dem Provider und der kann nun für eine Subdomain ein eigenes Pub-Verzeichnis zur Verfügung stellen. Man kann aber auch nur ein Hauptverzeichnis haben und die Subdomain

    Bei mir zum Beispiel habe ich selbst ohne Zugriff auf die http.conf eine Subdomain eingerichtet und zwar ein einfaches kleines Angebot zum Nachhilfeunterricht. Das ist derzeit eine einzige Seite mit nur wenigen eingehenden und ausgehenden Links.

    Die eigentliche "Quelle" der Seite ist allerdings ein Unterverzeichnis hachhilfe auf der normalen Webseite. Die entsteht mit dem Dreizeiler:

      
    RewriteCond %{HTTP_HOST} ^nachhilfe\.dr-wolfgang-uhr\.de$  
    RewriteCond %{REQUEST_URI} !^/nachhilfe/  
    RewriteRule ^(.*)$ /nachhilfe/$1 [L]  
    
    

    (Sorry hier müsste es noch eine .htaccess-Formatierung geben)

    Also anders

    /Pub/index.php -> Webseite
    /Pub/nachhilfe/index.html -> Nachhilfeseite

    Das bedeutet: Regel und Verzeichnisstruktur gehören zusammen.

    Neben dem einfachen - und auch vorläufigen - Definieren eines Unterverzeichnisses als "Subdomain" aus der .htaccess wird bei der Definition in der http.conf eine andere Verzeichnisstruktur gewählt

    [* Bemerkung folgt unten]
    /dwu/Pub -> Seitenhinhalt
    /nachhilfe-dwu/Pub - Subdomain

    Das sind auf dem Server zwei unterschiedliche Seiten. Im nächsten Schritt kann ich sogar über den NameServer aufspalten beide Inhalte auch noch auf unterschiedlichen Rechnern platzieren.

    server1/dwu/Pub -> Seitenhinhalt
    server2/nachhilfe-dwu/Pub - Subdomain

    Fazit: Für ein sauberers Mod-Rewrite braucht man:

    a) die Kenntnisse über Dateien und Verzeichnisstrukturen
    b) die Rechte in den jeweiligen Seiten

    um das Modul Mod-Rewrite einsetzen zu können. Denn spätestens ab [*] können es zwei verschiedene Seitenbetreiber sein. Und dann scheitern Weiterleitungen ggf. auch an Rechten.

  4. Z.B. soll der Aufruf "http://beispiel.ein-beispiel.de" an den Pfad "http://www.ein-beispiel.de/index.php?id=1234" übergeben werden.

    Wie wäre es denn mit einem Redirect im http://beispiel.ein-beispiel.de/-Root

    Da in der .htaccess müsste nur stehen:

    Redirect permanent / http://www.ein-beispiel.de/index.php?id=1234

    Ganz ohne Mod-Rewrite ...

    1. Hallöchen auch,

      Redirect permanent / http://www.ein-beispiel.de/index.php?id=1234

      Ganz ohne Mod-Rewrite ...

      Eben - das ist die einfachste Lösung. Danke!

      MfG
      cross

      1. Eben - das ist die einfachste Lösung. Danke!

        Keine Ursache, das gibt es häuft. Die wirklich einfachen Lösungen sind einfach einfach.