quelleq: mod_rewrite revisited oder: Domainweiterleitung

Hallo,

ich habe drei Domains, die bei Schlundtech liegen und bei denen ich eine IP Adresse angegeben habe, auf welche diese drei nun auch verweisen. Eine der drei ist eine IDN Domain mit Umlaut. Ich habe weiterhin eine Domain www.hauptdomain.de die auf einem anderen Server mit eigener IP liegt und die auf ein Unterverzeichnis verweist.

Nun möchte ich, dass die drei Domains auf das Unterverzeichnis gerootet werden, in der Adresszeile des Browers jedoch weiterhin die verweisende Domain angzeigt wird.

Folgendes sollte mir helfen:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^192.168.0.1$ [OR]
RewriteCond %{HTTP_HOST} ^www.domain1.de$ [OR]
RewriteCond %{HTTP_HOST} ^domain1.de$ [OR]
RewriteCond %{HTTP_HOST} ^www.domain2.de$ [OR]
RewriteCond %{HTTP_HOST} ^domain2.de$ [OR]
RewriteCond %{HTTP_HOST} ^www.domainmitumlaut.de$ [OR]
RewriteCond %{HTTP_HOST} ^domainmitumlaut.de$
RewriteRule ^(.*)$ http://www.hauptdomain.de/$1 [L,R=301]

Alle Anfragen werden richtig weitergeleitet - bis auf domainmitumlaut.de. Und in der Browserzeile taucht hauptdomain.de auf - was sie nicht soll.

Wenn ich eine Anfrage an domainmitumlaut.de sende, bekomme ich folgende Fehlermeldung:
bei Firebox: Filename = /homepages/31/d11694477/htdocs/cgi-bin/error500.cgi
beim IE: HTTP 403 (verboten)

Wie lassen sich meine beiden Probleme lösen? Nehme Hilfe dankbar an.
quelleq

  1. Moin Moin !

    Was meint Schlundtech zu Deinem Problem? Die bezahlst Du doch, das beinhaltet auch Support. Ich weiß nicht, ob der Webserver in den Regexps mit Umlauten klarkommt. Vielleicht ist an der Stelle auch punycode angesagt.

    Alexander

    --
    Nein, ich beantworte keine Fragen per eMail. Dafür ist das Forum da.
    Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".
    1. Was meint Schlundtech zu Deinem Problem? Die bezahlst Du doch, das beinhaltet auch Support. Ich weiß nicht, ob der Webserver in den Regexps mit Umlauten klarkommt. Vielleicht ist an der Stelle auch punycode angesagt.

      Schlundtech habe ich nicht gefragt. Aber der Hinweis von Sven und dir hat geholfen. Ich habe jetzt die IDN-Domain nicht mit Sonderzeichen angegeben, sondern in ihrer ASCII Variante. Und damit wird die Domain aufgelöst und richtig weitergeleitet. Danke.

      Ich hatte Schlundtech jedoch vor einiger Zeit wegen der MX-Einträge kontaktiert. Bei der Angabe der MX-Einträge dürfen ebenfalls keine IDN-Namen verwandt werden. Hier sollte ich statt dessen einen anderen Hostnamen verwenden, z.B. den Hostnamen des dedizierten Servers selbst.

      Kann mir noch jemand auf die Sprünge helfen, mit der Anzeige der Domainnamen in der Adressezeile des Browsers?

  2. Moin!

    Eine der drei ist eine IDN Domain mit Umlaut.

    Es gibt in der Welt von DNS, Apache-Webservern und damit auch mod_rewrite keine Umlautdomains!

    Die werden direkt im Browser konvertiert in umlautlose Domains, welche mit "xn--" beginnen. Verwende diese.

    - Sven Rautenberg

  3. hi,

    RewriteRule ^(.*)$ http://www.hauptdomain.de/$1 [L,R=301]

    Alle Anfragen werden richtig weitergeleitet [...] Und in der Browserzeile taucht hauptdomain.de auf - was sie nicht soll.

    doch, soll sie - laut deiner regel zumindest.
    denn du machst ja einen expliziten redirect, sagst also dem browser, "fordere diese ressource bitte unter dem URL http://www.hauptdomain.de/$1 erneut an".

    wenn du das nicht willst - dann lasse das flag R=301 weg.

    gruss,
    wahsaga

    1. Hallo wahsaga,

      wenn du das nicht willst - dann lasse das flag R=301 weg.

      Auch mit

      RewriteCond %{HTTP_HOST} ^www.domain.com$ [OR]
      RewriteCond %{HTTP_HOST} ^domain.com$
      RewriteRule ^(.*)$ http://www.hauptdomain.de/$1 [L]

      wird immer noch www.hauptdomain in der Browserzeile angezeigt - und nicht www.domain.com.

      Ich habe inzwischen alternativ auch versucht, auf das Verzeichnis hauptdomain.de/htdocs zu verweisen. Habe jedoch nur einen error 500 produziert.

      Eventuell eine Idee, woran es liegen könnte?

      1. hi,

        Auch mit

        RewriteCond %{HTTP_HOST} ^www.domain.com$ [OR]
        RewriteCond %{HTTP_HOST} ^domain.com$
        RewriteRule ^(.*)$ http://www.hauptdomain.de/$1 [L]

        wird immer noch www.hauptdomain in der Browserzeile angezeigt - und nicht www.domain.com.

        ok, stimmt - der redirect wird hier wohl auch indirekt ausgelöst - da du ja http://www.hauptdomain.de/... als ziel angibst, bleibt dem server ja nicht viel anderes über, als den client eine redirect-aufforderung zu schicken.

        versuche es mal mit einer relativen referenzierung des verzeichnisses in bezug auf das wurzel-verzeichnis des servers, also irgendwas in der art

        RewriteRule ^(.*)$ /usr/www/userkennung/html/hauptdomain-verzeichnis/$1 [L]

        o.ä.

        gruss,
        wahsaga

        1. Hallo,

          versuche es mal mit einer relativen referenzierung des verzeichnisses in bezug auf das wurzel-verzeichnis des servers, also irgendwas in der art

          RewriteRule ^(.*)$ /usr/www/userkennung/html/hauptdomain-verzeichnis/$1 [L]

          So auf die Schnelle, bekomme ich das nicht hin. Probiere die Tage noch mal weiter herum.

          Auch bei einer relativen Pfadangabe bekomme ich die Fehlermeldung:

          Filename = /homepages/31/d11694477/htdocs/cgi-bin/error500.cgi

          Das ist übrigens auch der DOCUMENT_ROOT, den mir phpinfo.php rausgibt. Da ich als Pfad

          RewriteRule ^(.*)$ /homepages/31/d11694477/htdocs/hauptdomain.de/$1 [L]

          angegeben habe, hätte es ja an sich klappen können. Wenn ich was rausgefunden habe, poste ich es.
          Trotzdem danke,
          quelleq

        2. Moin!

          versuche es mal mit einer relativen referenzierung des verzeichnisses in bezug auf das wurzel-verzeichnis des servers, also irgendwas in der art

          RewriteRule ^(.*)$ /usr/www/userkennung/html/hauptdomain-verzeichnis/$1 [L]

          Nein, das ist falsch. mod_rewrite operiert nur mit URLs[1], nicht mit Serverpfaden.

          Also reicht es vollkommen aus, die Serverangabe zu eliminieren - ersatzlos.

          [1] Ausnahme: In RewriteConds _kann_ man auch prüfen, ob gewisse lokale Files existieren, deren Pfad man sich irgendwie zusammensetzt. Das ist aber nicht default.

          - Sven Rautenberg