Silly: GEToder POST in .htaccess

Hallo,
ich leite mit .htaccess in der domain foo.com um in der Art:
RewriteRule (.*).html$    http://www.bar.com/index.pl?p1=$1&p2=x

Damit werden die Parameter in der Adresszeile mit angezeigt.
Jetzt gibt es aber doch die POST-Methode, wo diese nicht angezeigt werden.
Ist diese Methode auch in der .htaccess möglich?
Gruß
Silly

  1. Moin!

    ich leite mit .htaccess in der domain foo.com um in der Art:
    RewriteRule (.*).html$    http://www.bar.com/index.pl?p1=$1&p2=x

    Damit werden die Parameter in der Adresszeile mit angezeigt.

    Würden sie nicht, wenn du nicht auf eine absolute URL weiterleiten würdest. Wenn das Ziel auf der gleichen Domain liegt, lass die Serverangabe einfach weg - und schon wird der Request nur noch intern umbenannt, nicht mehr öffentlich.

    Jetzt gibt es aber doch die POST-Methode, wo diese nicht angezeigt werden.
    Ist diese Methode auch in der .htaccess möglich?

    Nein, ausgeschlossen. Redirects sind hinsichtlich des Wechsels der HTTP-Methode sowieso kritisch, aber ein Wechsel von GET zu POST halte ich für komplett ausgeschlossen - selbst wenn's in irgendeinem Standard definiert wäre, würde die Realität der Browser es wohl verhindern.

    Abgesehen davon ist POST eine typische Methode zur Übermittlung von Formulardaten - URL-Parameter müssen aber keinem Formular entstammen, das Vorhaben ist auch von daher irgendwie quer.

    - Sven Rautenberg

    --
    "Love your nation - respect the others."
    1. Hallo,

      Abgesehen davon ist POST eine typische Methode zur Übermittlung von Formulardaten - URL-Parameter müssen aber keinem Formular entstammen, das Vorhaben ist auch von daher irgendwie quer.

      Aber Formulardaten können doch auch mit GET übertragen werden, dann wären sie doch auch URL-Parameter und irgendwie quer?

      1. hi,

        Abgesehen davon ist POST eine typische Methode zur Übermittlung von Formulardaten - URL-Parameter müssen aber keinem Formular entstammen, das Vorhaben ist auch von daher irgendwie quer.

        Aber Formulardaten können doch auch mit GET übertragen werden,

        Können, müssen aber nicht.

        dann wären sie doch auch URL-Parameter

        Formulare sind _eine_ mögliche Quelle von GET-Parametern, aber nicht die einzige.

        und irgendwie quer?

        Nix quer.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. Hallo.

          und irgendwie quer?

          Nix quer.

          Längst nicht.
          MfG, at

    2. Würden sie nicht, wenn du nicht auf eine absolute URL weiterleiten würdest.

      Ist aber eine andere URL, so dass ich sie absolut angeben muss.

      Redirects sind hinsichtlich des Wechsels der HTTP-Methode sowieso kritisch, aber ein Wechsel von GET zu POST halte ich für komplett ausgeschlossen - selbst wenn's in irgendeinem Standard definiert wäre, würde die Realität der Browser es wohl verhindern.

      »»

      Das verstehe ich nicht:  Wechsel der HTTP-Methode
      Wodurch erfolgt ein Wechsel?

      Gruss Silly

      1. hi,

        Würden sie nicht, wenn du nicht auf eine absolute URL weiterleiten würdest.
        Ist aber eine andere URL,

        Du meinst Domain.

        so dass ich sie absolut angeben muss.

        Ja, dann bliebe nur noch POST. Dass das aber in Kombination mit der Rewrite-Geschichte kaum sinnvoll umsetzbar ist, sagte Sven bereits.

        Redirects sind hinsichtlich des Wechsels der HTTP-Methode sowieso kritisch, aber ein Wechsel von GET zu POST halte ich für komplett ausgeschlossen - selbst wenn's in irgendeinem Standard definiert wäre, würde die Realität der Browser es wohl verhindern.

        Das verstehe ich nicht:  Wechsel der HTTP-Methode
        Wodurch erfolgt ein Wechsel?

        Bspw. dadurch, dass auf einen POST-Request mit dem HTTP Statuscode 303 See Other geantwortet wird.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
      2. Moin!

        Würden sie nicht, wenn du nicht auf eine absolute URL weiterleiten würdest.
        Ist aber eine andere URL, so dass ich sie absolut angeben muss.

        Dann hast du sowieso keine Freiheit in der Wahl der URL, kannst also in der Regel nicht einfach GET durch POST ersetzen, sondern mußt bei GET bleiben. Und das geht eben nur mit sichtbaren Parametern.

        Redirects sind hinsichtlich des Wechsels der HTTP-Methode sowieso kritisch, aber ein Wechsel von GET zu POST halte ich für komplett ausgeschlossen - selbst wenn's in irgendeinem Standard definiert wäre, würde die Realität der Browser es wohl verhindern.
        »»

        Das verstehe ich nicht:  Wechsel der HTTP-Methode
        Wodurch erfolgt ein Wechsel?

        Das ist es ja eben: Ein Wechsel erfolgt in der Regel nicht, GET bleibt GET - als Standardmethode beim Ressourcenabruf. POST bleibt oft POST, ein Wechsel von POST zu GET ist in der Praxis auch anzutreffen und wird (zunehmend zuverlässiger) von den Browsern auch befolgt.

        Von GET zu POST gibts aber nichts existierendes, soweit mir bekannt ist. Zumal auch bei POST-Requests URL-Parameter erlaubt sind, der Browser also vermutlich an der Erscheinung in der URL-Zeile sowieso nichts ändern würde!

        Sofern du Einfluß auf die Ziel-Domain hast, gelten natürlich einige der hier gemachten Aussagen nur eingeschränkt. Beispielsweise könntest du beeinflussen, dass das Zielskript nicht nur auf GET, sondern analog auch auf POST-Daten reagiert könnte.

        In diesem Fall wäre es aber einfacher, deinen jetzigen Redirect ohne Parameter zu gestalten, und das darin vorgenommene Aufdröseln komplett auf dem Server der Zieldomain vorzunehmen - dort dann eben verdeckt.

        - Sven Rautenberg

        --
        "Love your nation - respect the others."
        1. Hallo,
          ich danke Euch
          aber das meiste habe ich immer noch nicht verstanden.

          Sofern du Einfluß auf die Ziel-Domain hast, gelten natürlich einige der hier gemachten Aussagen nur eingeschränkt. Beispielsweise könntest du beeinflussen, dass das Zielskript nicht nur auf GET, sondern analog auch auf POST-Daten reagiert könnte.

          Das Zielskript kann ich anpassen, wie könnte dann der redirect aussehen?

          In diesem Fall wäre es aber einfacher, deinen jetzigen Redirect ohne Parameter zu gestalten, und das darin vorgenommene Aufdröseln komplett auf dem Server der Zieldomain vorzunehmen - dort dann eben verdeckt.

          Wenn ich an die Zieldomain keine Parameter übergebe, was soll ich dann aufdröseln?
          Gruß
          Silly

          1. Moin!

            ich danke Euch
            aber das meiste habe ich immer noch nicht verstanden.

            Das ist schlecht, denn nur wenn du's verstehst, wird's was werden mit der Lösung deines Problems.

            Sofern du Einfluß auf die Ziel-Domain hast, gelten natürlich einige der hier gemachten Aussagen nur eingeschränkt. Beispielsweise könntest du beeinflussen, dass das Zielskript nicht nur auf GET, sondern analog auch auf POST-Daten reagiert könnte.
            Das Zielskript kann ich anpassen, wie könnte dann der redirect aussehen?

            Du hast jetzt (auf Domain foo.com):
            RewriteRule (.*).html$    http://www.bar.com/index.pl?p1=$1&p2=x

            Offenbar mußt du redirecten auf www.bar.com - dan tu das einfach mit der kompletten URL:

            RedirectMatch (.*).html$ http://www.bar.com$1.html

            Wenns unbedingt mit einer RewriteRule sein muß:
            RewriteRule (.*).html$ http://www.bar.com$1.html

            Und auf dem Zielserver setzt du dann deine erste RewriteRule wieder an:
            RewriteRule (.*).html$    index.pl?p1=$1&p2=x

            Und schon hast du keine Parameter mehr im Spiel.

            Eventuell könnte es sich als nützlich erweisen (sofern die RewriteRule im Hauptverzeichnis stört), das Redirecting in ein separates, virtuelles Verzeichnis zu verlagern, auf das noch zusätzlich geprüft wird:

            RedirectMatch (.*).html$ http://www.bar.com/redirected$1.html

            und

            RewriteRule ^redirected/(.*).html$    index.pl?p1=$1&p2=x

            Wenn ich an die Zieldomain keine Parameter übergebe, was soll ich dann aufdröseln?

            Der Schritt vom Dateinamen (plus .html) hin zum Parameter steht ja fest und kann, wie oben demonstriert, problemlos auch auf dem Zielserver ausgeführt werden.

            - Sven Rautenberg

            --
            "Love your nation - respect the others."
            1. Hallo,
              das sieht ja gut aus.
              Es wird jetzt allerdings ein Weilchen dauern, bis ich das realisiert habe (komme heute nicht mehr dazu). Sei so net und schau morgen nochmls vorbei, ob ich noch eine Frage hab.

              Offenbar mußt du redirecten auf www.bar.com - dan tu das einfach mit der kompletten URL:

              RedirectMatch (.*).html$ http://www.bar.com$1.html

              Wenns unbedingt mit einer RewriteRule sein muß:
              RewriteRule (.*).html$ http://www.bar.com$1.html

              Ich weiss nicht, ob es unbedingt eine RewriteRule sein muss? Kann ich nicht beurteilen, Hauptsache es läuft.
              Danke
              Silly

            2. Guten Abend,

              Und auf dem Zielserver setzt du dann deine erste RewriteRule wieder an:
              RewriteRule (.*).html$    index.pl?p1=$1&p2=x

              Hier erhalte ich jetzt die Meldung im log:
              Options FollowSymLinks or SymLinksIfOwnerMatch is off which implies that RewriteRule directive is forbidden

              Als Abhilfe habe ich gefunden:

              Options +SymLinksIfOwnerMatch
              oder
              Options +FollowSymLinks
              in .htaccess einfügen.

              Das habe ich gemacht aber ohne Änderung.

              1. Hier erhalte ich jetzt die Meldung im log:
                Options FollowSymLinks or SymLinksIfOwnerMatch is off which implies that RewriteRule directive is forbidden

                Als Abhilfe habe ich gefunden:

                Options +SymLinksIfOwnerMatch
                oder
                Options +FollowSymLinks
                in .htaccess einfügen.

                Das habe ich gemacht aber ohne Änderung.

                Logisch. Der Server ist konfiguriert, dir keine RewriteRules zu erlauben, dieses Recht kannst du dir nicht einfach per .htaccess geben.

                Wenn, dann müsste es in der httpd.conf geändert werden.

                - Sven Rautenberg

                1. Wenn, dann müsste es in der httpd.conf geändert werden.

                  Habe ich auch gemacht, mit dem gleichen (Miss)Erfolg.
                  Gruß
                  Silly

                  NB. Was heisst "off site"

                  1. Hab noch etwas in def conf-Datei ändern müssen. Jetzt klappt der Redirect!
                    Danke