Alfons: Modrewrite Redirect

Hallo,

ich möchte ein paar Domains direkt in meine Datenbankbasierte Page leiten.

Dazu verwende ich eine htaccess File in dem Ordner, die dann auf test.de weiterleiten soll.

Leider erhalte ich mit :

RewriteEngine on
RewriteCond  %{REQUEST_URI} !-U
RewriteRule  ^(.+)          http://test.de/$1

den Fehler.
Premature end of script headers

Was ist denn daran falsch?
Ich habe es von dem Apache Guide herausgenommen?

Gruss
alfons

  1. ich möchte ein paar Domains direkt in meine Datenbankbasierte Page leiten.

    RewriteRule  ^(.+)          http://test.de/$1

    den Fehler.
    Premature end of script headers

    Na sowas, den Fehler kann ich auf http://test.de nicht entdecken..

    In jedem Fall ist das aber eher ein Problem mit dem Skript, das bei der Stiftung Warentest die Seiten erstellen soll und dabei wohl vergisst, HTTP-Kopfzeilen (die besagten "script headers") auszugeben.

    Gruß,
      soenk.e

  2. Hi Alfons,

    Leider erhalte ich mit :
    RewriteEngine on
    RewriteCond  %{REQUEST_URI} !-U
    RewriteRule  ^(.+)          http://test.de/$1
    den Fehler.
    Premature end of script headers

    Was ist denn daran falsch?

    ich sehe zunächst mal keinen Zusammenhang zwischen Deinen Direktiven und der Fehlermeldung - letztere entsteht durch die Ausführung Deiner "datenbankbasierten Seite" und müßte eigentlich auch dann auftreten, wenn Du diese direkt ansprichst ... es sei denn, Du hast in dieser Seite eine implizite Annahme getroffen, die nach dem Umschreiben des URL nicht mehr gültig ist (irgendwelche indirekten Adressierungen?).
    Wahrscheinlich gibt Deine Seite gar nichts oder eine Fehlermeldung aus - an einer Stelle, wo sie eigentlich einen HTTP-Header ausgeben sollte; das ist die übliche Ursache für "Premature end of script headers". Genaueres findest Du im error_log Deiner Domain.

    Hast Du eigentlich ein RewriteLog angelegt, um zu kontrollieren, was Deine Übersetzungsregeln bewirken?

    Viele Grüße
          Michael

    --
    T'Pol: I apologize if I acted inappropriately.
    V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.
    (sh:| fo:} ch:] rl:( br:^ n4:( ie:% mo:) va:| de:/ zu:| fl:( ss:) ls:~ js:|)
    Auch diese Signatur wird an korrekt konfigurierte Browser gzip-komprimiert übertragen.
    1. Hallo,

      danke erstmals für Eure Hilfe. Allerdings verstehe ich das nicht ganz.

      Wie  lege ich eine Rewritelog an?

      Im Error Log steht auch nicht mehr als diese Fehlermeldung.

      Der Fehler tritt nicht auf, da ich eigentlich nur umleiten will ohne jede Manipulation.

      Um es einfach zu sagen:

      Ich möchte einfach, dass in meinem Verzeichnis, wo das htaccess File ist, die Seiten von z. B. test.de erscheinen lassen.

      Geht das nicht mit den unteren htaccess?

      Gruss
      Alfons

      Hi Alfons,

      Leider erhalte ich mit :
      RewriteEngine on
      RewriteCond  %{REQUEST_URI} !-U
      RewriteRule  ^(.+)          http://test.de/$1
      den Fehler.
      Premature end of script headers

      Was ist denn daran falsch?

      ich sehe zunächst mal keinen Zusammenhang zwischen Deinen Direktiven und der Fehlermeldung - letztere entsteht durch die Ausführung Deiner "datenbankbasierten Seite" und müßte eigentlich auch dann auftreten, wenn Du diese direkt ansprichst ... es sei denn, Du hast in dieser Seite eine implizite Annahme getroffen, die nach dem Umschreiben des URL nicht mehr gültig ist (irgendwelche indirekten Adressierungen?).
      Wahrscheinlich gibt Deine Seite gar nichts oder eine Fehlermeldung aus - an einer Stelle, wo sie eigentlich einen HTTP-Header ausgeben sollte; das ist die übliche Ursache für "Premature end of script headers". Genaueres findest Du im error_log Deiner Domain.

      Hast Du eigentlich ein RewriteLog angelegt, um zu kontrollieren, was Deine Übersetzungsregeln bewirken?

      Viele Grüße
            Michael

      »

      1. Hi Alfons,

        Wie lege ich eine Rewritelog an?

        http://httpd.apache.org/docs/mod/mod_rewrite.html#RewriteLog

        Viele Grüße
              Michael

        --
        T'Pol: I apologize if I acted inappropriately.
        V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.
        (sh:| fo:} ch:] rl:( br:^ n4:( ie:% mo:) va:| de:/ zu:| fl:( ss:) ls:~ js:|)
        Auch diese Signatur wird an korrekt konfigurierte Browser gzip-komprimiert übertragen.
        1. Danke für den Link, leider kommt da bei mir die Fehlermeldung:

          htaccess: RewriteLog not allowed here

          Gruss
          Alfons

          1. Hallo nocheinmal,

            ausserdem habe ich das Problem, dass ich nicht genau weiss, weshalb es auch lokal nicht funktioniert, inkl. Fehlermeldungen.

            Müsste

            RewriteEngine on
            RewriteCond  %{REQUEST_URI} !-U
            RewriteRule  ^(.+)          http://127.0.0.1/$1

            nicht auch funktionieren

            gruss
            Alfons

            1. ausserdem habe ich das Problem, dass ich nicht genau weiss, weshalb es auch lokal nicht funktioniert, inkl. Fehlermeldungen.

              Vielleicht solltest Du Dir einfach nochmal die bisher erhaltenen Antworten durchlesen. Es könnte sein, daß Dir bereits jemand gesagt hat, daß es ein "Premature end of script headers" nichts mit mod_rewrite zu tun hat.

              Gruß,
                soenk.e

              1. Hallo,

                das habe ich schon gelesen, allerdings hat das Script beim directaufruf keine Probleme.

                Wenn dann der Fehler nur bei einer Umleitung auftrifft, liegt der Fehler bei der Umleitung, oder?

                Gruss
                Alfons

                1. Hi Alfons,

                  Wenn dann der Fehler nur bei einer Umleitung auftrifft, liegt der Fehler bei der Umleitung, oder?

                  er kann auch daran liegen, daß die Umleitung Randbedingungen verändert, die Dein Skript als implizite Annahmen verwendet.

                  Wer von beiden dann "schuld" ist, das ist eine Definitionsfrage - Du kannst genauso gut der Umleitung vorwerfen, sie habe die Betriebsbedingungen des Skripts unterminiert, wie dem Skript, es sei nicht flexibel genug für den Einsatz in heterogenen Umgebungen ...

                  Viele Grüße
                        Michael

                  --
                  T'Pol: I apologize if I acted inappropriately.
                  V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.
                  (sh:| fo:} ch:] rl:( br:^ n4:( ie:% mo:) va:| de:/ zu:| fl:( ss:) ls:~ js:|)
                  Auch diese Signatur wird an korrekt konfigurierte Browser gzip-komprimiert übertragen.
                2. das habe ich schon gelesen, allerdings hat das Script beim directaufruf keine Probleme.

                  Wenn dann der Fehler nur bei einer Umleitung auftrifft, liegt der Fehler bei der Umleitung, oder?

                  Diese Fehlermeldung kommt eigentlich nur, wenn ein Skript keine oder falsche HTTP-Kopfdaten ausgibt; der Fehler kann also nur in einem Skript sein. Nachdem Du aber jetzt verraten hast, daß es bei direktem Aufruf funktioniert, ist der Auslöser zweifelsohne die Umleitung, der Fehler aber immernoch im Skript.

                  Stellt sich jetzt die Frage, welches Skript Schuld ist.

                  Du machst auf Server A eine externe Umleitung auf Server B, falls eine URL angetroffen wird, die auf Server A nicht existiert. Ich gehe mal davon aus, daß Du mit test.de nicht den Server der Stiftung Warentest meinst, sondern Deinen eigenen, oder das Du zur Stiftung gehörst und dort Zugriff hast; falls nicht, wird es schwierig.

                  • Wo erscheint die Fehlermeldung, auf Server A oder auf Server B?
                  • Was steht in der URL des Browsers, die alte URL oder die neue, auf Server B verweisende?
                  • Wieso existieren URLs, die es auf Server A nicht gibt, automatisch auf Server B?
                  • Welche Skripte arbeiten auf Server A, welche auf Server B? Insbesondere: Worum handelt es sich bei dem ominösen Datenbankskript?

                  Ein paar Details wären hilfreich bei der Einschätzung, was Du überhaupt vor hast. Mir ist das jedenfalls noch vollkommen schleierhaft.

                  Die RewriteLog-Einstellung gehört davon abgesehen in die Serverkonfiguration.

                  Gruß,
                    soenk.e

                    • Wo erscheint die Fehlermeldung, auf Server A oder auf Server B?

                    Erscheint auf dem lokalen Server A (WAMP), auf Server B habe ich keinen RootZugriff.

                    • Was steht in der URL des Browsers, die alte URL oder die neue, auf Server B verweisende?

                    die alte Url:  http://127.0.0.1/test/index.htm

                    • Wieso existieren URLs, die es auf Server A nicht gibt, automatisch auf Server B?

                    Habe ich jetzt nicht verstanden.

                    • Welche Skripte arbeiten auf Server A, welche auf Server B? Insbesondere: Worum handelt es sich bei dem ominösen Datenbankskript?

                    Momentan will ich nur umleiten, d.h. ohne PHP-Script.

                    RewriteLog:
                    127.0.0.1 - - [05/Sep/2003:10:51:12 +0200] [localhost/sid#65628c][rid#6f8778/initial] (3) [per-dir /wampp13cs/htdocs/test/] strip per-dir prefix: /wampp13cs/htdocs/test/index.htm -> index.htm
                    127.0.0.1 - - [05/Sep/2003:10:51:12 +0200] [localhost/sid#65628c][rid#6f8778/initial] (3) [per-dir /wampp13cs/htdocs/test/] applying pattern '^/~(.+)' to uri 'index.htm'
                    127.0.0.1 - - [05/Sep/2003:10:51:12 +0200] [localhost/sid#65628c][rid#6f8778/initial] (1) [per-dir /wampp13cs/htdocs/test/] pass through /wampp13cs/htdocs/test/index.htm

                    htaccess:
                    RewriteEngine on
                    RewriteRule   ^/~(.+)  http://www.teamone.de/~$1  [L]

                    verwendete Url:
                    http://127.0.0.1/test/index.htm

                    error log:
                    [Fri Sep 05 10:53:49 2003] [error] [client 127.0.0.1] File does not exist: /wampp13cs/htdocs/test/index.htm

                    Brauchst Du noch was ?

                    Gruss und danke
                    Alfons

                      • Wo erscheint die Fehlermeldung, auf Server A oder auf Server B?

                      Erscheint auf dem lokalen Server A (WAMP), auf Server B habe ich keinen RootZugriff.

                      Also sitzt das verdächtige Skript auf Server A, was wiederum bedeutet, daß Deine Umleitung nicht greift. Überprüfe, welches Skript die URLs bearbeitet.

                      • Wieso existieren URLs, die es auf Server A nicht gibt, automatisch auf Server B?

                      Habe ich jetzt nicht verstanden.

                      Deine ursprüngliche Konfiguration war

                      RewriteCond  %{REQUEST_URI} !-U
                        RewriteRule  ^(.+)          http://test.de/$1

                      Die Angabe -U bedeutet bei RewriteCond, daß die URL lokal existieren muß, ! negiert die Bedingung. Deine obige RewriteRule-Umleitung wird also (wegen dem davor stehenden "RewriteCond [..] !-U") nur ausgeführt, falls die URL auf dem lokalen Server nicht existiert.
                      Mir kam das lediglich etwas merkwürdig vor, es kann natürlich seine Richtigkeit haben.

                      • Welche Skripte arbeiten auf Server A, welche auf Server B? Insbesondere: Worum handelt es sich bei dem ominösen Datenbankskript?

                      Momentan will ich nur umleiten, d.h. ohne PHP-Script.

                      RewriteLog:
                      127.0.0.1 - - [05/Sep/2003:10:51:12 +0200] [localhost/sid#65628c][rid#6f8778/initial] (3) [per-dir /wampp13cs/htdocs/test/] strip per-dir prefix: /wampp13cs/htdocs/test/index.htm -> index.htm
                      127.0.0.1 - - [05/Sep/2003:10:51:12 +0200] [localhost/sid#65628c][rid#6f8778/initial] (3) [per-dir /wampp13cs/htdocs/test/] applying pattern '^/~(.+)' to uri 'index.htm'
                      127.0.0.1 - - [05/Sep/2003:10:51:12 +0200] [localhost/sid#65628c][rid#6f8778/initial] (1) [per-dir /wampp13cs/htdocs/test/] pass through /wampp13cs/htdocs/test/index.htm

                      Vollkommen in Ordnung: "'/~'+irgendwas" passt nicht auf den Text "index.htm", also greift Deine Umleitung nicht und es wird versucht, die URL lokal auszuliefern.

                      htaccess:
                      RewriteEngine on
                      RewriteRule   ^/~(.+)  http://www.teamone.de/~$1  [L]

                      Wo ist RewriteCond geblieben?

                      verwendete Url:
                      http://127.0.0.1/test/index.htm

                      error log:
                      [Fri Sep 05 10:53:49 2003] [error] [client 127.0.0.1] File does not exist: /wampp13cs/htdocs/test/index.htm

                      Siehe oben, die Umleitung greift nicht und offensichtlich gibt es kein test/index.htm auf Deinem lokalen Server.

                      Brauchst Du noch was ?

                      Ja, wo ist denn der Fehler "Premature end of script headers" geblieben, um den es doch eigentlich ging?

                      Gruß,
                        soenk.e

          2. Hi Alfons,

            htaccess: RewriteLog not allowed here

            vielleicht hättest Du den Text hinter dem Link doch komplett lesen sollen?

            Dort steht nämlich:
            Context: server config, virtual host

            Viele Grüße
                  Michael

            --
            T'Pol: I apologize if I acted inappropriately.
            V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.
            (sh:| fo:} ch:] rl:( br:^ n4:( ie:% mo:) va:| de:/ zu:| fl:( ss:) ls:~ js:|)
            Auch diese Signatur wird an korrekt konfigurierte Browser gzip-komprimiert übertragen.